我有一个不允许的字符数组:
$array = ('<php', '<?', '?>', '<h', '<b>');
我有一个字符串消息。我如何检查,字符串中不包含数组中的这些单词?
基本上,我有一个ajax聊天,当我输入<b>hello</b>
,它使文本粗体,我不想让HTML在那里,我不知道怎么做?
您可以使用strip_tags
剥离所有html标签,但是当您输出到html时,您应该始终使用htmlspecialchars()
,以便任何特殊字符,如>
, <
等进行编码,因此它们不会对生成的html产生任何影响。
顺便说一下,黑名单方法很可能失败,如果人们开始添加<script>
标签等怎么办?虽然当您为要输出的媒体(html、db等)正确编码时,这里似乎没有必要这样做,但通常最好使用白名单方法。
xml对您在网页上显示的任何内容进行编码
你真的不需要去掉这些。如果你使用htmlspecialchars
,那么你可以将<
编码为<
,将>
编码为>
,这样html就可以直接传递,而不是由浏览器呈现。
作为补充:如果您使用jQuery,请记住.text(...)
将为您转义这些内容。.html(...)
不会。当将html安全地输出到浏览器时,请使用.text(...)
。
要避免使用HTML标签,可以使用
$value = htmlentities($value);
或
$value = htmlspecialchars($value);
也可以使用
这两个函数$value = htmlspecialchars(htmlentities($value));