za4me
@za4me
Человек

Удаление строки при помощи регулярки?

Добрый день.

Имеется код, который удаляет в строке все что расположено между ретроспективной и опережающей проверках.
$str = "Lorem Ipsum - это текст-рыба, часто используемый в печати и вэб-дизайне. 
Lorem Ipsum является стандартной рыбой для текстов на латинице с начала XVI века. 
В то время некий безымянный печатник создал большую коллекцию размеров 
и форм шрифтов, используя Lorem Ipsum для распечатки образцов. 
<!--Tbegin-->something.jpg</!--Tbegin-->
Lorem Ipsum не только успешно пережил без заметных изменений пять веков, 
но и перешагнул в электронный дизайн. Его популяризации в новое время послужили 
публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в более
недавнее время, программы электронной вёрстки типа Aldus PageMaker, в
шаблонах которых используется Lorem Ipsum.";

preg_filter('/(?<=<!--Tbegin-->).*(?=<\/!--Tbegin-->)/', '', $str);


Но, как удалить полностью строку:
something.jpg!--Tbegin-->

Учитывая то что вместо лорема может быть любой текст.

upd: заменил \S на .* по совету Александр Павлюк
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
@OVK2015
$testStr = "Lorem Ipsum - это текст-рыба, часто используемый в печати и вэб-дизайне. 
Lorem Ipsum является стандартной рыбой для текстов на латинице с начала XVI века. 
В то время некий безымянный печатник создал большую коллекцию размеров 
и форм шрифтов, используя Lorem Ipsum для распечатки образцов. 
<!--Tbegin-->something.jpg</!--Tbegin-->
Lorem Ipsum не только успешно пережил без заметных изменений пять веков, 
но и перешагнул в электронный дизайн. Его популяризации в новое время послужили 
публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в более
недавнее время, программы электронной вёрстки типа Aldus PageMaker, в
шаблонах которых используется Lorem Ipsum.";
$regExp = "#(?<=<!--Tbegin-->)((?:.*?)(?:</!--Tbegin-->))#si";
echo preg_replace($regExp, "", $testStr);



something.jpg!--Tbegin-->

Или в вопросе форматирование тостера у вас кусок кода спрятало?

Если всю подстроку
<!--Tbegin-->....</!--Tbegin-->
то еще проще:
$regExp = "#((?:<!--Tbegin-->)(?:.*?)(?:</!--Tbegin-->))#si";
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы