关于php过滤垃圾评论

写了一个垃圾评论过滤插件,但是总觉得哪里有问题,请各位提提建议,代码如下:
1.config.php

<?php
return [
    'processing_mode' => 1,
    'keyword'    => '去,的',    //填写要过滤的关键字以英文,号分割
];

2.类文件

<?php
class MaliciousCommentsFiltering
{
    protected $config;
    public function __construct()
    {
        //引入配置文件
        $this->config=include 'config.php';
    }

    /**
     * 搜索关键字并替换
     * @param $searchKeyword 要搜索的关键字
     * @return mixed|string 返回处理结果
     */
    public function senseKey($searchKeyword)
    {
        $keyword = $this->config['keyword'];
        $keyword = explode(',', $keyword);
        $reslut  = '';
        foreach ($keyword as $value) {
            if (strpos($searchKeyword, $value) !== false) {
                //如果processing_mode设置为1代表,用*号代替关键字
                if ($this->config['processing_mode'] == 1) {
                    $reslut = str_ireplace($value, '***', $searchKeyword);
                } else {
                    //如果返回300代表存在关键字
                    $reslut = 300;
                }
            }
        }
        return $reslut;
    }
}

欢迎各位发表自己的观点

阅读 3.8k
4 个回答

foreach循环如果匹配到2个以上的敏感词,你的result变量只屏蔽了最后一个词

可以优化下效率,比如一个位置命中了敏感词,是否可以将这块位置标记为以匹配,别的关键字就略过此位置。

用正则呢,以下是手册上的:

$string = 'The quick brown fox jumps over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);

输出:
The bear black slow jumps over the lazy dog.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题