вопрос по preg_replace

L
На сайте с 17.05.2013
Offline
88
382

Нужно вырезать блок <div class='also_read'> .......... </div> вместе со всем содержимым, делаю так:

echo preg_replace('#<div class=\'also_read\'(?:.*)(?=</div>)#Usi', '', $text);

В резулбьтате вырезает все но остается незакрытый див - </div>. Почему он тоже не вырезается? Что не так в регулярке?

Mr_Promoter
На сайте с 06.08.2004
Offline
254
#1

echo preg_replace("#<div class='also_read'(.*?)</div>#Usi", '', $text);

http://webpromote.ru (http://webpromote.ru) - пописываю иногда ...
L
На сайте с 17.05.2013
Offline
88
#2

Для текста 111<div class='also_read'> 222 </div> 333

echo preg_replace("#<div class='also_read'(.*?)</div>#Usi", '', $text);

оставило только 111, хотя должно быть 111 333

---------- Добавлено 28.09.2015 в 22:10 ----------

вернее для такого текста: 111<div class='also_read'> 222 </div> <div>333</div>

LovelAss
На сайте с 05.06.2009
Offline
96
#3


echo preg_replace("#<div class='also_read'[^>]*>.*?<\/div>#is", '', $text);
Mr_Promoter
На сайте с 06.08.2004
Offline
254
#4

помоему / нужно экранировать - \/

<?php

$text="Для текста 111<div class='also_read'> 222 </div> 333";

echo preg_replace("#<div class='also_read'(.*?)<\/div>#Usi", '', $text);

?>

Для текста 111 333

siv1987
На сайте с 02.04.2009
Offline
427
#5
luckydan:
Почему он тоже не вырезается?

Потому что утверждения не захватываются в результат поиска.

luckydan:
(?=</div>)

"/<div class='also_read'>.*?<\/div>/s"

Mr_Promoter
На сайте с 06.08.2004
Offline
254
#6

<?php

$text="Для текста 111<div class='also_read'> 222 </div> 333 вернее для такого текста: 111<div class='also_read'> 222 </div> <div>333</div>";

echo preg_replace("#<div class='also_read'(.*?)<\/div>#", '', $text);

?>

Для текста 111 333 вернее для такого текста: 111

333

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий