PHP - 删除里面的div和内容

时间:2013-02-08 17:40:22

标签: php regex preg-replace strip-tags

HTML:

<!--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-->

我试过:

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

4 个答案:

答案 0 :(得分:0)

使用XML / HTML / DOM解析器比使用正则表达式更好。 SimpleXML非常简单。

您只需加载带有SimpleXML或其他HTML / XML解析器的HTML,然后使用xpath查找您要查找的节点和/或注释,然后将其删除。

答案 1 :(得分:0)

我建议使用HTML创建DomDocument对象,然后使用RemoveChild

答案 2 :(得分:0)

另一种选择......如果您可以使用注释来分隔代码,例如:

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

你可以删除它之间的所有内容:

$newstr = preg_replace('/<!--code-->.*?<!--\/code-->/is', '', $htmlstring);

答案 3 :(得分:0)

preg_replace('/(\<div\ class="quoteheader"\>)(.+)(<br \/>)/si', '', $string)