我想基本建立一个网站共享示例代码和评论。我的问题是避免任何标签/脚本,除了一个img和一些非常常见的像我b ...我尝试了不同的解决方案,但在一个点上所有的堆叠:如果用户使用<不适用于标签,意味着不到...php条带与例外或重组htmlspecialchar
首先开始我的代码与拆分标记,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);
您是否想过转义所有HTML,然后允许用户使用不同的标记语言(如markdown或bbcode)添加格式和图像?这样代码示例可以与注释分开处理。我基本上在思考如何工作的方式。 – 2011-04-16 21:19:55
在这种情况下,请使用降价。一旦你习惯了降价的简单性,BBCode是可怕的。顺便说一句,至少在这里降低这个SO允许一些HTML – ThiefMaster 2011-04-16 22:31:54
感谢您的答案。我坚持我的方式并解决了它:我多次使用爆炸来找出特殊的标签并用
...等替换它们 –
muraty
2011-04-17 21:47:30