2012-01-18 73 views
1

Possible Duplicate:
Php: remove all tags, but 「a href」 in a textPHP的正則表達式來刪除HTML標籤,但保留<a href

有什麼辦法去掉html標籤使用正則表達式從一個字符串,但只保留標籤和相關的造型?

例如:

<div> 
    <p>Blah blah blah <a href="xyz.com" style="blah blah">blah blah</a> blah blah</p> </div> 

會給你:

Blah blah blah <a href="xyz.com" style="blah blah">blah blah</a> blah blah 

感謝您的幫助

+3

它真的需要正則表達式嗎?是不是'strip_tags' http://php.net/manual/en/function.strip-tags.php不夠? – Vyktor 2012-01-18 11:52:13

回答

1

最好的辦法是使用strip_tags函數與第二個參數ETER:

$new_string = strip_tags($input_string, "<a>"); 
1

你不需要爲正則表達式,你可以使用用strip_tags與第二個參數

+0

問題是,如果你想要保證用戶輸入,這不是解決方案..他們仍然可以使用惡意腳本通過使用標籤屬性 – mishu 2012-01-18 11:53:33

0

你必須使用preg_replace_callback具有以下的正則表達式:

$regex = "/<(\S+)[^>\\/]*(?:\\/>|>(.*)</\\1>)/msi"; 

這將選擇所有的標籤。現在,您必須檢查回調,並且如果組1的內容不是aA,則可以返回組2(標籤內)的內容,否則返回組0(無修改)。

+0

你可以進一步增強,以滿足您的需求,通過解析標籤的屬性使用正則表達式時遇到查看是否存在惡意屬性的錨標籤。 – 2012-01-18 11:55:55

相關問題