在php中过滤正确的单词和适当的语言英语

时间:2016-05-10 05:37:51

标签: php web

我正在建立一个用户评论并获得信用的系统。为了获得快速信用,用户可以添加评论,例如“fffff”,“niceeeeeeeeee”,“greeeeeeaaaatt”,“aaaa”,“b”等等。
无论如何都要过滤掉这些评论。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

为了测试正确的拼写,您可以使用pspell_check()函数。

$pspell_link = pspell_new("en");

if (pspell_check($pspell_link, "niceeeeeeeeee")) {
    echo "Correct spelling.";
} else {
    echo "Wrong spelling";
}

答案 1 :(得分:0)

您可以使用正则表达式检查用户的输入是否包含3个连续字符(因为我不知道英语中连续3个字母相同的单词)< / p>

$user_input = "niceeeeeeeeeeee";

if (preg_match("/([A-Za-z])\\1\\1/", $user_input)) {
    echo "String contains the same letter 3 times in a row and is not valid";
} else {
    echo "String is ok!";
}

这将匹配&#34; niceee&#34;,&#34; greeeat&#34;,&#34; aaaa&#34;等或连续3次或更多次具有相同字母的任何字符串。如果你想检查用户&#39;对多个模式的输入,您可以将正则表达式放在一个数组中并检查它们,例如:

$patterns = [
    "/(.)\\1\\1/",            // any character (not just letters) 3+ times in a row
    "/^.$/",                  // a single character
    "/.{15,}/",               // contains a word longer than 15 characters
    "/([A-Za-z]{2,})\\1\\1/"  // 2 letters alternating e.g. "abababab"
];

foreach( $patterns as $pattern ){
    if (preg_match($pattern, $user_input)) {
        echo "This is an invalid string";
    }
}

或者,如果您没有太多模式(并且您不关心可读性),您可以将所有模式与|连在一起。

if (preg_match("/(.)\\1\\1|^.$|.{15,}|([A-Za-z]{2,})\\2\\2/", $user_input)) {
    echo "This is an invalid string";
}