использование preg_replace для удаления тега html

Вот часть html на моей странице.

<div id="video-ad">
          <div id="wpn_ad_square">

          </div>
        </div>

Я хочу полностью удалить wpn_ad_square div с помощью оператора preg_replace. Обратите внимание, что на странице могут быть другие wpn_ad_square div, и я хочу удалить их все

Вот мои попытки

$html = preg_replace('#\<div\sid="wpn_ad.*?\<\/div\>#s', '', $html, 1);

$html = preg_replace('#<div id="wpn_ad.*?</div>#s', '', $html, 1);

$html = preg_replace('#<div id="wpn_ad.*?<\/div>#s', '', $html, 1);

К сожалению, ни один из них не работает для меня .... Пожалуйста, предоставьте решение preg_replace, чтобы я мог знать, что не так с моим.


person user2650277    schedule 26.11.2013    source источник
comment
stackoverflow.com/questions/1732348/   -  person Phil    schedule 26.11.2013
comment
stackoverflow.com/questions/3577641/   -  person Surabhil Sergy    schedule 26.11.2013
comment
Моя цель здесь - понять, почему мой preg_replace не работает. Я знаю, что Dom - лучшая альтернатива, но я хочу знать, что не так с моим кодом.   -  person user2650277    schedule 26.11.2013
comment
Плохо то, что через 5 месяцев ваш HTML изменится, и вы вернетесь сюда и спросите, что не так...   -  person brasofilo    schedule 26.11.2013


Ответы (1)


Это очень просто: просто код, который вы хотели бы удалить с помощью нежадного

$html = '
<div id="video-ad">
   <div id="wpn_ad_square">my example content</div>
</div>
';

echo preg_replace('/\<div id=\"wpn_ad_square\"\>(.*?)\<\/div\>/', '', $html);
person TURTLE    schedule 26.11.2013