2009-12-12 142 views
0

我做了這個表達式來刪除頁面中的所有空白(包括只有空格的標籤)標籤。preg_replace刪除空標籤,但保留塊引號的結尾

$content = preg_replace('/<[^\/>]*>([\s]?)*<\/[^>]*>/', '', $content); 

它的工作一種享受,直到它不得不面對這樣的內容...

<blockquote> 
<p >foo bar</p> 
</blockquote> 
<p ><a href="image.jpg" rel="lightbox" title=""><img title="image" src="image.jpg" /></a><br /></p> 

而且將其作爲...

<blockquote> 
<p >this is a test for the pluggin</p> 
<p ><a href="image.jpg" rel="lightbox" title=""><img title="image" src="image.jpg" /></a><br /></p> 

從而去除</blockquote>

我一直在抓我的頭在這一個,不能得到它的工作。任何人都可以看到明確的解決方案,而不是指定應該格式化的標籤嗎我也應該說,它正在格式化wordpress文章中的'the_content'。

回答

3

正則表達式和HTML不是很好的匹配,因爲HTML不是常規語法,並且沒有邊緣情況和陷阱。您最好使用HTML解析器(如this one)並檢查/操作DOM對象。

0

如果您發現它沒有獲取所有標記,您可能還想看看比Simple HTML Dom更高級的HTML Purifier