我想删除包含字词comment
或share
的id或类的div(例如:<div id="comment">
,<div class="header-comment">
,<div id="comment-footer">
,{{1我用的东西
<div class="social-share">
不行。如何做正确的正则表达式?以下是一些测试代码,我想删除preg_replace('/<div[^>]*(comment|share)[^>]*>(.*?)<\/div>/is', '', $htmls);
部分并保留comment
和content
,
footer
答案 0 :(得分:2)
考虑使用DOMDocument函数来解析HTML,然后定位您不想要的div
和remove。这将更快,更容易理解和维护,并且写入速度可能更快。
答案 1 :(得分:1)
我认为您应该使用DomDocument
尝试:
$dom = new DOMDocument();
$dom->loadHTML($htmls);
$remove = array("comment","share");
$removeList = array();
foreach ( $dom->getElementsByTagName("div") as $div ) {
if (in_array($div->getAttribute("class"), $remove) || in_array($div->getAttribute("id"), $remove)) {
$removeList[] = $div;
}
}
foreach ( $removeList as $div ) {
$div->parentNode->removeChild($div);
}
$dom->formatOutput = true;
echo "<pre>";
echo htmlentities($dom->saveHTML());
答案 2 :(得分:0)
如何正确使用正则表达式?
您可以first identifying all DIVs, extract their texts执行此操作,然后使用preg_match
查看正则表达式模式的文本。
但是,您也可以使用正则表达式来保留该部分,只需使用 xpath 即可。在你的情况下,这更直截了当。
答案 3 :(得分:0)
请参阅此网站以测试您的REGEX http://www.regexplanet.com/advanced/java/index.html