2011-05-11 45 views
1
var okTags = /^(<\/?(b|blockquote|code|del|dd|dl|dt|em|h1|h2|h3|i|kbd|li|ol|p|pre|s|sup|sub|strong|strike|ul)>|<(br|hr)\s?\/?>)$/i; 

var okLinks = /^(<a\shref="(\#\d+|(https?|ftp):\/\/[-A-Za-z0-9+&@#\/%?=~_|!:,.;\(\)]+)"(\stitle="[^"<>]+")?\s?>|<\/a>)$/i; 


var okImg = /^(<img\ssrc="https?:(\/\/[-A-Za-z0-9+&@#\/%?=~_|!:,.;\(\)]+)"(\swidth="\d{1,3}")?(\sheight="\d{1,3}")?(\salt="[^"<>]*")?(\stitle="[^"<>]*")?\s?\/?>)$/i; 


text = text.replace(/<[^<>]*>?/gi, function (tag) { 
        return (tag.match(okTags) || tag.match(okLinks) || tag.match(okImg)) ? tag : "" 
       }) 

回答

4

replace()可以通過preg_replace()

match()更換將preg_match()這是非常強大的

檢查手冊,看看它是如何與你的代碼工作,他們沒有什麼不同,你可以使用您的回撥功能。

+1

'preg_replace_callback()'在這種情況下將是合適的替代品。 – mario 2011-05-11 06:15:10

+0

你是對的馬里奧,謝謝你的補充 – Ibu 2011-05-11 06:17:18

2

它看起來像你用正則表達式解析HTML。

在這種情況下,PHP提供了DOMDocument,這對於DOM操作來說非常好。您可以使用確保您的字符串包含安全 HTML。

更具體的域特定解決方案是HTML Purifier

相關問題