2013-02-08 5 views
0

HTML:PHP - удалить дивы и содержимое внутри

<!--a lot of HTML before--> 
<div class="quoteheader"> 
    <div class="topslice_quote"><a href="htsomelink">Some text</a></div> 
</div> 
<blockquote class="bbc_standard_quote">Some text<br /> 
</blockquote> 
<div class="quotefooter"> 
    <div class="botslice_quote"></div> 
</div> 
<br /> 
<!--a lot of HTML after--> 

Мне нужно: удалить все между div.quoteheader и первым <br/> после, поэтому результат должен выглядеть так:

<!--a lot of HTML before--> 
<!--a lot of HTML after--> 

I TRIED:

$message = preg_replace('/<div\sclass=\"quoteheader\">[^<]+<\/div>/i', '', $string) 
+0

Это было бы все между ' div.quoteheader' и * second * '
' –

ответ

0

Вы бы гораздо лучше служили парсером XML/HTML/DOM, чем регулярное выражение. SimpleXML довольно просто.

Вы просто загрузите HTML с помощью SimpleXML или другого анализатора HTML/XML, затем используйте xpath, чтобы найти узлы и/или комментарии, которые вы ищете, а затем удалите их.

+0

substr & strpos и strip_tags было бы достаточно –

0

Альтернативой ... если вы можете разграничить код с комментариями, как это:

<!--code--> 
<div> .. </div> 
<!--/code--> 

вы можете удалить все между тем, что:

$newstr = preg_replace('/<!--code-->.*?<!--\/code-->/is', '', $htmlstring); 
0
preg_replace('/(\<div\ class="quoteheader"\>)(.+)(<br \/>)/si', '', $string) 
Смежные вопросы