0

我有一个不允许的字符数组:

$array = ('<php', '<?', '?>', '<h', '<b>');

我有一个字符串消息。我该如何检查,该字符串在数组中不包含任何这些单词?

基本上,我有一个 ajax 聊天,当我输入时<b>hello</b>,它会使文本变粗,我不想在那里允许 HTML,我不知道怎么做?

4

4 回答 4

2

您可以使用 去除所有 html 标签strip_tags,但是当您输出到 html 时,您应该始终使用htmlspecialchars(),以便对任何特殊字符(如><等)进行编码,这样它们就不会对生成的 html 产生任何影响。

顺便说一句,黑名单方法很可能会失败,如果人们开始添加<script>标签等怎么办?虽然在为输出到的媒体(html、db 等)正确编码时似乎没有必要,但通常最好使用白名单方法。

于 2013-06-18T14:52:26.610 回答
0

xml 对您在网页上显示的任何内容进行编码...

于 2013-06-18T14:53:01.890 回答
0

你真的不需要把这些去掉。如果您使用htmlspecialchars,那么您可以编码<as&lt;>as &gt;,因此 html 会直接传递,但不会被浏览器呈现。

另外:如果您使用 jQuery,请记住这.text(...)将为您转义这些东西。.html(...)将不会。安全地将 html 输出到浏览器时,请使用.text(...).

于 2013-06-18T14:53:47.730 回答
0

为避免使用 HTML 标签,您可以使用

$value = htmlentities($value); 

或者

$value = htmlspecialchars($value);

你也可以使用这两个功能

$value = htmlspecialchars(htmlentities($value));
于 2013-06-18T14:55:50.200 回答