我知道我可以使用{{{}}}来转义输出文本中的所有html标签,但我想只转义不安全的标签而不是所有标签(例如我想在文本中使用br标签)
答案 0 :(得分:0)
你一定要自己实施。我假设您想要转义的代码可能只是<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();