PHP坏字过滤
这是一个非常奇怪的情况,我们有一个坏词列表,所有这些词都很完美,直到一个名为“Claudia”的客户试图提交表格:PHP坏字过滤,php,filter,preg-match,preg-match-all,Php,Filter,Preg Match,Preg Match All,这是一个非常奇怪的情况,我们有一个坏词列表,所有这些词都很完美,直到一个名为“Claudia”的客户试图提交表格: $blocked = ['audi','opel','vw','mercedes','porsche']; $input = 'Claudia'; $matched = preg_match_all("/(".implode('|', $blocked).")/i", $input); if($matched > 0) { echo "Your word: {$i
$blocked = ['audi','opel','vw','mercedes','porsche'];
$input = 'Claudia';
$matched = preg_match_all("/(".implode('|', $blocked).")/i", $input);
if($matched > 0) {
echo "Your word: {$input} is blocked";
} else {
echo "Your word: {$input} is OK";
}
如果你试图用输入“Claudia”提交,如何使这个坏词检查器也能工作
但不包括:
"my audi"
"-audi-"
"**audi**"
。。。
或者使用audi的任何其他变体?您可以用标记(
\b
)围绕正则表达式,这将限制它仅匹配“整”字。将行更改为:
$matched = preg_match_all("/\b(".implode('|', $blocked).")\b/i", $input);
请参见您可以用标记(
\b
)包围正则表达式,这将限制它仅匹配“整”字。将行更改为:
$matched = preg_match_all("/\b(".implode('|', $blocked).")\b/i", $input);
请看您的php版本是什么?php版本是5.64也许我可以列出一些单词?我不知道怎么做!?如果这个词在白名单中,我可以再加一个检查,然后让它通过!?只希望一个叫梅赛德斯的人不要提交表格;p你遇到了斯肯索普问题()。您可以添加额外的检查来解决这个问题,但如果您尝试自动过滤掉输入,最终您总会遇到类似的问题。也许最好还是存储输入,但将其标记为可疑,以便主持人审查?您的php版本是什么?php版本是5.64也许我可以列出一些单词?我不知道怎么做!?如果这个词在白名单中,我可以再加一个检查,然后让它通过!?只希望一个叫梅赛德斯的人不要提交表格;p你遇到了斯肯索普问题()。您可以添加额外的检查来解决这个问题,但如果您尝试自动过滤掉输入,最终您总会遇到类似的问题。也许最好还是存储输入,但将其标记为可疑,供主持人查看?您可以修复链接:)您可以修复链接:)