你可能认为这个问题已经被问到了。但是这个问题是不同的。我想删除除<img src='smilies/smilyOne.png'>
和<img src='smilies/smilyTwo.png'>
之外的所有代码
这是我现有的代码:
$message = stripslashes(strip_tags(mysql_real_escape_string($_POST['message']), "<img>?"));
谢谢! : - )
答案 0 :(得分:0)
此解决方案使用DOMDocument及其相关类来解析html,找到图像元素,然后删除那些没有正确src
属性的元素。它使用简单的正则表达式来匹配src属性:
/^smilies\/smily(One|Two)\.png$/
^
是字符串的开头,$
是结尾; /
和.
都是正则表达式中的特殊字符,因此使用反斜杠进行转义。 (One|Two)
表示匹配One
或Two
。
$dom = new DOMDocument;
$dom->loadHTML($html); // your text to be filtered is in $html
// iterate through all the img elements in $html
foreach ($dom->getElementsByTagName('img') as $img) {
# eliminate images with no "src" attribute
if (! $img->hasAttribute('src')) {
$img->parentNode->removeChild($img);
}
# eliminate images where the src is not smilies/smily(One|Two).png
elseif (1 !== preg_match("/^smilies\/smily(Two|One)\.png$/",
$img->getAttribute("src"))) {
$img->parentNode->removeChild($img);
}
// otherwise, the image is OK!
}
$output = $dom->saveHTML();
# now strip out anything that isn't an <img> tag
$html = strip_tags($output, "<img>");
echo "html now: $html\n\n";