【发布时间】:2012-11-09 12:12:01
【问题描述】:
我想删除一些 id 或 class 包含单词 comment 或 share 的 div(如:<div id="comment">、<div class="header-comment">、<div id="comment-footer">、<div class="social-share">),我使用的东西
preg_replace('/<div[^>]*(comment|share)[^>]*>(.*?)<\/div>/is', '', $htmls);
不工作。如何做一个正确的正则表达式?这是一些测试代码,我想删除comment部分并保留content和footer,
$htmls = <<<EOT
<div id="content">
Main content.
</div>
<div id="comment">
<ul>
<li class="comment">
<div class="header-comment">
Comment:
<span class="date-comment">8/11/2012, 21:25</span>
</div>
<h4>Some Text</h4>
<p class="test-comment">Blah~~ Blah~~ Blah~~</p>
<div class="share">
<div class="vote">
<a class="vota yes" title="Like">2</a>
<a class="vota no" title="Unlike">0</a>
</div>
</div>
</li>
<li class="comment">
<div class="header-comment">
Comment:
<span class="date-comment">8/11/2012, 23:08</span>
</div>
<h4>Other Text</h4>
<p class="test-comment">Blah~~ Blah~~ Blah~~</p>
<div class="share">
<div class="vote">
<a class="vota yes" title="Like">4</a>
<a class="vota no" title="Unlike">0</a>
</div>
</div>
</li>
</ul>
</div>
<div id="footer">
Footer content.
</div>
EOT;
$htmls = preg_replace('/<div[^>]*(comment|share)[^>]*>(.*?)<\/div>/is', '', $htmls);
echo $htmls;
【问题讨论】:
-
每次您尝试使用正则表达式解析 HTML 时,一只小海豹都会被可怕地杀死。
-
Html 不是正则语言,因此很难使用正则表达式来解析它。 en.wikipedia.org/wiki/Regular_language