php条带异常或重新组织htmlspecialchar

时间:2011-04-16 21:04:03

标签: php htmlspecialchars strip-tags

我正在尝试基本建立一个网站,以便共享示例代码和评论。我的问题是避免使用任何标签/脚本,除了img和一些非常常见的标签/脚本,例如我...我尝试了不同的解决方案但是在某一点上所有的堆栈:如果用户使用<不是标签,意思是不到......

首先启动我的代码,将 标签拆分,将其他地方拆分为标签,将htmlspecialchars拆分为代码部分然后重新合并。但是,如果用户使用<在文本部分的任何地方,它都会删除帖子,直到它看到>。 (还尝试通过在<之后放置一个空格来避免strip_tags擦除,但无法找到识别它是标记还是少于标记的方法

然后我向后试了一下。对所有帖子使用htmlspecialchars并将特定的更改回标签外观。这次我遇到了所有替换功能的问题,因为它们中的一些没有正常工作或彼此重叠。我觉得有一个简单的解决方案,但我无法看到正确的角度。有什么建议 ?

$yazi = htmlspecialchars($_POST["yazi"]);
$yazi = str_replace('&lt;a href=&quot;', '<a href"', $yazi);
$yazi = str_replace('&lt;&#47a&gt;', '</a>', $yazi);
$yazi = str_replace('&lt;code&gt;','<code>', $yazi);
$yazi = str_replace('&lt;&#47codea&gt;', '</code>', $yazi);
$yazi = str_replace('&lt;br&gt;', '<br>', $yazi);
$yazi = str_replace('&lt;i&gt;', '<i>', $yazi);
$yazi = str_replace('&lt;&#47i&gt;', '</i>', $yazi);
$yazi = str_replace('&lt;b&gt;','<b>',$yazi);
$yazi = str_replace('&lt;&#47b&gt;','</b>',$yazi);
$yazi = str_replace('&lt;p&gt;','<p>',$yazi);
$yazi = str_replace('&lt;&#47p&gt;','</p>',$yazi);
$yazi = str_replace('&lt;img src=&quot;', '<img src="', $yazi);
$yazi = str_replace('&quot;/&gt;', '"/>', $yazi);
$yazi = str_replace('&quot; /&gt;', '" />', $yazi);
$yazi = str_replace('&quot;&gt;', '">', $yazi);
$yazi = str_replace('&quot; &gt;', '" >', $yazi);

1 个答案:

答案 0 :(得分:0)

听起来你想要一个HTML清洁剂。

http://htmlpurifier.org/看起来很不错。