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)
答案 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)