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

2 に答える 2

2

HTMLを正規表現で解析しているようです。

その場合、PHP はDOMDocumentを提供します。これは、DOM 操作を行うのに非常に適しています。これを使用して、文字列に安全なHTMLが含まれていることを確認できます。

よりドメイン固有のソリューションはHTML Purifierです。

于 2011-05-11T06:25:50.663 に答える