我试图使用AJAX / PHP验证评论表单,现在几乎完成了,除了php中的strip_tags函数似乎并没有删除所有元素。这就是我所拥有的:
$msg = $_POST['message'];
$msg = strip_tags( $msg );
此功能似乎只是删除了结束标记。例如。在<div>
被删除的情况下,未删除已在消息框中输入的</div>
。
我想逐字地删除邮件中的每个html元素。我如何实现这一目标?
谢谢,Dan。
编辑:
我觉得自己像个白痴!
我有一个与我的show comment功能分开的验证功能,只是意识到我的错误。我从未在我正在显示的消息上运行strip_tags!
无论如何,感谢您的帮助!
答案 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>
您期待。