我知道我可以使用{{{}}}从输出文本中转义所有html标签,但我只想转义不安全的标签,而不是所有标签(例如,我想在文本中使用br标签)
您肯定应该自己实现它。我假设您想要转义的标签可能只是<script>
和<iframe>
,但在我看来,完全删除该内容更合适,而不是将转义的内容无故保留在页面上。
你可以使用regex
进行简单的替换,比如
$html = preg_replace("/<iframe.*?>/", "", $html);
$html = preg_replace("/<script(.*?)>(.*?)</script>/", "", $html);
然而,这被认为是的坏做法,因为不存在完美的正则表达式,因此您的安全性可能会受到破坏。
一个更好的想法是使用PHP DOMDocument Parser。你可以这样做来删除脚本标签:
$doc = new DOMDocument();
$doc->loadHTML($html);
$script_tags = $doc->getElementsByTagName('script');
for ($i = 0; $i < $script_tags->length; $i++) {
$script_tags->item($i)->parentNode->removeChild($script_tags->item($i));
}
$clean_html = $doc->saveHTML();