我想刪除一些DIV ID爲或包含單詞類comment
或share
(如:<div id="comment">
,<div class="header-comment">
,<div id="comment-footer">
,<div class="social-share">
),這是我用PHP正則表達式中刪除一些不需要的div
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的,順便邪神要你。(http://stackoverflow.com/questions/1732348/正則表達式匹配打開標籤,除了xhtml自包含標籤/ 1732454#1732454) – rid
每當你嘗試用正則表達式解析HTML時,一個小海豹會被殺死。 – moonwave99
Html不是一種常規的語言,因此使用正則表達式來解析它是非常困難的。 http://en.wikipedia.org/wiki/Regular_language –