如何查找我的表格中是否有不适当的词

时间:2019-06-08 09:25:53

标签: php

我正在尝试查找用户是否在我的注册表中输入了任何不合适的词。我以为我会使用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();

1 个答案:

答案 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库,它将通过多种语言的支持来满足您的需求,您可以改进词典,并且非常容易集成。

希望有帮助:)