子比主题限制评论纯数字/纯英文/日语/俄文/韩文/阿拉伯文/泰文/链接拦截代码!
最近都能看到垃圾评论,纯数字纯英文有些还附带网址,现在每天几条虽然不多,但以后很难说。每次都要到后台删也是很麻烦的,又不喜欢装插件,索性就加个验证吧。首先是纯数字纯英文的评论一概不允许通过。
功能说明
//功能备注说明
$《变量名》 = '《正则表达式》';
if (preg_match($《变量名》, $_POST['comment'])) {
echo (json_encode(array('error' => 1, 'ys' => 'danger', 'msg' => '《消息提示》')));
exit();
}
代码中,所有被《》包含的内容,都可以自定义,替换内容后,将《》删除
使用演示
下方代码,可实现评论中有数字便拦截
//拦截含有数字的评论
$Ijsz = '/[0-9]/u';
if (preg_match($ljsz, $_POST['comment'])) {
echo (json_encode(array('error' => 1, 'ys' => 'danger', 'msg' => '您的评论不能含有数字')));
exit();
}
代码说明
1.变量名一般是固定字母组成的内容,最好与正则表达式有解释含义
2.如果正则表达式中需要匹配文字,也就是UTF-8类字符,必须在正则表达式后加u,否则将无法正确匹配;还有需要根据PHP语言的版本编写对应的正则表达式,因为每种代码语言的正则表达式的表示有所不同,网络上有专门的教程可以学习。
3.preg_match函数前有!时,代表不匹配;
preg_match函数前无!时,代表匹配;
可用的正则表达式
匹配日文,如:こんにちは,私は
建议使用匹配,指定函数前不加!,含有日文就拦截
/[ぁ-ん]+|[ァ-ヴ]+/u
建议使用不匹配,指定函数前要加!,评论没有中文就会拦截
/[一-龥]/u
其他语言函数
$Ijsz = '/[0-9]/u'; //数字
$enpattern = '/[一-龥]/u'; //中文
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u'; //日文
$ruattern ='/[А-я]+/u'; //英文
$krattern ='/[갂-줎]+|[줐-쥯]+|[쥱-짛]+|[짞-쪧]+|[쪨-쬊]+|[쬋-쭬]+|[쵡-힝]+/u'; //韩语
$arattern ='/[؟-ض]+|[ط-ل]+|[م-م]+/u'; //阿拉伯语
$thattern ='/[ก-๛]+/u'; //泰语
完整代码
修改文件目录位置:/wp-content/themes/zibll/action/comment.php
搜索”内容合规性判断“将代码填在上方
//拦截评论规则
$comment = $_POST['comment'];
$error_msg = '';
if (preg_match('/^[0-9]+$/u', $comment)) {
$error_msg = '您的评论不能完全由数字组成';
} elseif (preg_match('/^[a-zA-Z]+$/u', $comment)) {
$error_msg = '您的评论不能完全由英文字母组成';
} elseif (!preg_match('/[一-龥0-9a-zA-Z]/u', $comment)) {
$error_msg = '您的评论必须包含汉字、数字或英文字母';
} elseif (preg_match('/(.)\\1{2}/u', $comment)) {
$error_msg = '您的评论不能包含连续出现3次及以上的相同字符';
} elseif (preg_match('/[ぁ-ん]+|[ァ-ヴ]+/u', $comment)) {
$error_msg = '您的评论不能包含日文';
}
if ($error_msg) {
echo json_encode([
'error' => 1,
'ys' => 'danger',
'msg' => $error_msg,
]);
exit();
}
© 版权声明
分享是一种美德,转载请保留原链接
THE END
暂无评论内容