php strip_tags没有删除div(和其他人)

时间:2012-07-04 00:21:16

标签: php strip-tags

我试图使用AJAX / PHP验证评论表单,现在几乎完成了,除了php中的strip_tags函数似乎并没有删除所有元素。这就是我所拥有的:

$msg = $_POST['message'];
$msg = strip_tags( $msg );

此功能似乎只是删除了结束标记。例如。在<div> 被删除的情况下,未删除已在消息框中输入的</div>。 我想逐字地删除邮件中的每个html元素。我如何实现这一目标?

谢谢,Dan。

编辑:

我觉得自己像个白痴!

我有一个与我的show comment功能分开的验证功能,只是意识到我的错误。我从未在我正在显示的消息上运行strip_tags!

无论如何,感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

strip_tags()失败的一件事是htmlentities()

例如,<div>会显示为%3Cdiv%3E

试试这个。 htmlentities将转换代码,例如。 %3C到HTML,例如。 <

$msg = strip_tags(htmlentities($msg));

您应该能够通过比较这些来查看您尝试调试的内容:

echo $msg . '<br/>';
echo strip_tags($msg) . '<br/>';
echo htmlentities($msg) . '<br/>';
echo strip_tags(htmlentities($msg)) . '<br/>';

答案 1 :(得分:0)

  

strip_tags()将标记视为&lt;之间的不区分大小写的字符串。和   第一个空格或&gt;

如果你有任何空格,那么strip_tags('< / div >')strip_tags('< div >')就不会有任何变化。

您可能希望发布您尝试清理的字符串示例。

您还应该尝试直接回显$ msg并查看发出的源。由于您正在发布数据(取决于您从客户端发送数据的方式),您可能会发现您实际上正在尝试删除%3Cdiv%3E%3C%2Fdiv%3E(有效)而不是<div></div>您期待。