为了账号安全,请及时绑定邮箱和手机立即绑定

关于php过滤垃圾评论

关于php过滤垃圾评论

PHP
慕哥9229398 2019-03-05 16:45:25
写了一个垃圾评论过滤插件,但是总觉得哪里有问题,请各位提提建议,代码如下: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; } } 欢迎各位发表自己的观点
查看完整描述

4 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-18
?
郎朗坤

TA贡献1921条经验 获得超9个赞

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

查看完整回答
反对 回复 2019-03-18
?
呼唤远方

TA贡献1856条经验 获得超11个赞

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

$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.

查看完整回答
反对 回复 2019-03-18
?
MMTTMM

TA贡献1869条经验 获得超4个赞

为什么不用 ac 自动机……你要知道你这么做的误伤和效率很可怕的

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 711 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信