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