欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

wordpress和谐评论:禁止说小蝴蝶猥琐

程序员文章站 2022-06-07 08:57:26
...

不要紧张,这个题目的意思就是给评论加上一个限制,如果你们在评论中说我猥琐,将会提交失败并提示"不许说小蝴蝶猥琐" 我知道一天没发文章你们都想我了,为了给你们一个小小的惊喜,今天折腾出了这个功能, 请在评论框中大胆尝试 . 在完成这段代码之前,容我将它解

不要紧张,这个题目的意思就是给评论加上一个限制,如果你们在评论中说我猥琐,将会提交失败并提示"不许说小蝴蝶猥琐"
我知道一天没发文章你们都想我了,为了给你们一个小小的惊喜,今天折腾出了这个功能,请在评论框中大胆尝试.
在完成这段代码之前,容我将它解剖给你们听(不然写不长),如果想要检测出有人在评论中说小蝴蝶猥琐,当然需要正则表达式来对评论内容进行匹配:

preg_match_all('/小蝴蝶猥琐/', $ccontent, $match)

但是这样一来,我又想到了,如果你们这群没良心的要说"小蝴蝶真猥琐啊""小蝴蝶好猥琐哦""小蝴蝶太猥琐了"之类的咋办呢?
所以我们还要对小蝴蝶和猥琐之间的那些东西进行再和谐,

preg_match_all('/小蝴蝶[^>]*猥琐/', $ccontent, $match)

这样一来不管你在小蝴蝶和猥琐之间插入了什么都会被检测到并返回,但是我又又想到了,如果有个别好人要说"小蝴蝶不猥琐"也被和谐了咋办呢?这样的好人一定要留住.所以在上述匹配之前加入:

if( preg_match_all('/小蝴蝶不猥琐/', $ccontent, $match)){return $comment; }

好了,终于把文章凑的够长了,下面才是完整版本:

function xiaohudie_buweisuo($comment) {
    $ccontent = $comment['comment_content'];
    $match1 = '/小蝴蝶[^>]*猥琐/';
    $match2 = '/小蝴蝶不猥琐/';
	if( preg_match_all($match2, $ccontent, $match)){
       return $comment;
    }	//如果说的是"小蝴蝶不猥琐",则正常输出评论
    if( preg_match_all($match1, $ccontent, $match)){
        header("Content-type: text/html; charset=utf-8");
        exit('请自觉改成"小蝴蝶不猥琐"');//很不幸如果小蝴蝶和猥琐之间不是"不"....
    }else{
        return $comment;//其余情况无视
    }
} 
add_filter('preprocess_comment', 'xiaohudie_buweisuo');

最后再凑点吧:你们这群没良心的,上一篇文章末尾提出了那么感人肺腑的问题,尼玛怎么没有一个人来回答我?NO 福利 any more!

这里是被轰炸一下午后的感想:
首先坑爹的破邮箱又挂了,怒了
其次总结一下到目前为止已经修复的漏洞:"小蝴蝶不猥琐才怪"已失效,"小蝴蝶猥琐"中加HTML标签已失效,"小.蝴.蝶.猥.琐(以及之间夹杂任何字符)"已失效,还有,你们都输了!我的目的就是让你们不得不在评论里加上小蝴蝶不猥琐,虽然你们依然表达出了小蝴蝶猥琐的意思,但是,反正我不管,我就是赢了!呜呜呜