2011-05-11 78 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

相关问题