我正在尝试查找用户是否在我的注册表中输入了任何不合适的词。我以为我会使用strpos函数,但不确定代码是否正确?
我尝试使用strpos函数,并提供了3个名为$ first,$ find,$ offset的变量,以在$ find变量中为变量$ first查找不适当的单词
$offset = 0;
$find = array('retard', 'stupid', 'rascist', 'bastard', 'fuck', 'fuck-off');
if (strpos($first, $find, $offset)) {
header("Location: ../signup.php?signup2=rudewords");
exit();
But I guess the error here is that I do not know how to use the array with the strpos
更新的代码:
if (array_sum(array_map(function ($i) use ($first, $last, $email, $uid, $password) {
return strpos($first, $last, $email, $uid, $password, $i) !== FALSE;
}, $find)) > 0) {
header("Location: ../signup.php?signup2=badwords");
exit();
答案 0 :(得分:0)
这是一种可用来检测表单输入中的不良单词的方法(以您的示例为基础):
$offset = 0;
$find = array('retard', 'stupid', 'racist', 'bastard', 'fuck', 'fuck-off');
$first = "you're a fuckin' stupid";
if (array_sum(array_map(function ($i) use ($first) {
return strpos($first, $i) !== FALSE;
}, $find)) > 0) {
echo "BAD!";
}
如果您希望将其合成为快速功能,则可能是这样的:
function has_bad_words($input, $badwords) {
$output = false;
if (!empty($input)) {
if (!empty($badwords)) {
if (is_array($badwords)) {
$output = array_sum(array_map(function ($i) use ($input) {
return strpos($input, $i) !== FALSE;
}, $badwords)) > 0;
}
}
}
return $output;
}
还有一种更好的方法。如果您使用this库,它将通过多种语言的支持来满足您的需求,您可以改进词典,并且非常容易集成。
希望有帮助:)