Нужна помощь по регулярной функции preg_replace, а точнее по составлению правильного запроса к ней.
Вот так preg_replace("'<[\/\!]*?[^<>]*?>'si", "", $text); удаляет все теги.
А как сделать так, чтобы удалялись только все теги SPAN и P (не смотря на их параметры), а тег IMG оставался в тексте (пример ниже).
Подскажите, пожалуйста, кто знает, как это сделать правильно, какой запрос нужно составить?
P.S.
Если названия параметра id= , изменяются.
ПРИМЕР:
$text<<<t
текст текст текст текст текст текст
<span onmouseover="OnMouseOver(this,event)" onmouseout="OnMouse(this)" id="ID">
текст текст текст
</span>
текст текст текст текст
<p onmouseover="OnMouseOver(this,event)" onmouseout="OnMouse(this)" id="IDp">
текст текст текст
</p>
текст текст <img align="center" src="pic.gif" width=100 /> текст текст текст
текст текст текст текст текст текст текст текст текст
t;
preg_replace("'<[\/\!]*?[^<>]*?>'si", "", $text);
Спустя 1 час, 20 минут, 43 секунды (3.03.2011 - 06:40) inpost написал(а):
<(p|span) - то есть будет либо <p либо <span
Спустя 3 часа, 1 минута, 2 секунды (3.03.2011 - 09:41) natalia2011 написал(а):
То есть вот так правильно? preg_replace("'<[(p|span)]*?[^<>]*?>'si", "", $text);
Можете написать, где именно это вставить?
Можете написать, где именно это вставить?
Спустя 1 минута, 16 секунд (3.03.2011 - 09:42) natalia2011 написал(а):
И закрывающие теги </p> тоже будут так удалятся?
Спустя 51 минута, 35 секунд (3.03.2011 - 10:34) inpost написал(а):
natalia2011
Кстати, надо не только открывающие в самом начале указать, но ещё и закрывающие в самом конце.
Вставлять надо сразу как я показал, вместо < пишем <(p|span)[..тут продолжение., и концовка: (\/p|\/span)>
Кстати, надо не только открывающие в самом начале указать, но ещё и закрывающие в самом конце.
Вставлять надо сразу как я показал, вместо < пишем <(p|span)[..тут продолжение., и концовка: (\/p|\/span)>
Спустя 2 часа, 52 минуты, 56 секунд (3.03.2011 - 13:27) natalia2011 написал(а):
Ничего не пойму:
1 так:
preg_replace("'<(p|span)[\/\!]*?[^<>]*?>'si", "", $text);
Передние теги удаляет, а задние есть.
2 так делаю:
preg_replace("'<(p|span)[\/\!]*?[^<>]*?(\/p|\/span)>'si", "", $text);
Ни передние не удаляются, ни задние теги.
Подскажите, пожалуйста, где возможна ошибка?
1 так:
preg_replace("'<(p|span)[\/\!]*?[^<>]*?>'si", "", $text);
Передние теги удаляет, а задние есть.
2 так делаю:
preg_replace("'<(p|span)[\/\!]*?[^<>]*?(\/p|\/span)>'si", "", $text);
Ни передние не удаляются, ни задние теги.
Подскажите, пожалуйста, где возможна ошибка?
Спустя 1 минута, 36 секунд (3.03.2011 - 13:28) DedMorozzz написал(а):
$a = preg_replace('#<(p|span)>.*?</\\1>#is','',$a);
Спустя 10 минут, 9 секунд (3.03.2011 - 13:38) natalia2011 написал(а):
Цитата (DedMorozzz @ 3.03.2011 - 10:28) |
$a = preg_replace('#<(p|span)>.*?</\\1>#is','',$a); |
$a = preg_replace('#<(p|span)>.*?</\\1>#is','',$a);
Вроде и должно работать, но не срабатывает что-то, ни передние не удаляет, ни завершающие теги. Испробовано несколько десятков раз.