我正在尝试建立一个基本上用于共享示例代码和评论的网站。我的问题是避免使用任何标签/脚本,除了 img 和一些非常常见的标签/脚本,例如 i b ...
首先通过拆分标签开始我的
代码,split_tag 其他地方和 htmlspecialchars 到代码部分,然后重新合并它们。但是,如果用户在文本部分的任何地方使用 <,它仍然会删除帖子,直到看到 >。(还尝试通过在 < 之后放置一个空格来避免删除 strip_tags,但无法找到一种方法来识别它是标签还是小于标签)
然后我向后尝试。对所有帖子使用 htmlspecialchars 并将特定的更改回标签外观。这次我遇到了所有替换功能的麻烦,因为其中一些功能无法正常工作或相互重叠。我觉得有一个简单的解决方案,但我看不到正确的角度。有什么建议么 ?
$yazi = htmlspecialchars($_POST["yazi"]);
$yazi = str_replace('<a href="', '<a href"', $yazi);
$yazi = str_replace('</a>', '</a>', $yazi);
$yazi = str_replace('<code>','<code>', $yazi);
$yazi = str_replace('</codea>', '</code>', $yazi);
$yazi = str_replace('<br>', '<br>', $yazi);
$yazi = str_replace('<i>', '<i>', $yazi);
$yazi = str_replace('</i>', '</i>', $yazi);
$yazi = str_replace('<b>','<b>',$yazi);
$yazi = str_replace('</b>','</b>',$yazi);
$yazi = str_replace('<p>','<p>',$yazi);
$yazi = str_replace('</p>','</p>',$yazi);
$yazi = str_replace('<img src="', '<img src="', $yazi);
$yazi = str_replace('"/>', '"/>', $yazi);
$yazi = str_replace('" />', '" />', $yazi);
$yazi = str_replace('">', '">', $yazi);
$yazi = str_replace('" >', '" >', $yazi);