| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- <?php
 
- namespace app\common\library;
 
- use think\Hook;
 
- use think\Config;
 
- /**
 
-  * 关键词检索类
 
-  */
 
- class Keyworld
 
- {
 
-     /**
 
-      * @todo 敏感词过滤,返回结果
 
-      * @param array $list  定义敏感词一维数组
 
-      * @param string $string 要过滤的内容
 
-      * @return string $log 处理结果
 
-      */
 
-     public static function sensitive_old($string){
 
-         $count = 0; //违规词的个数
 
-         $sensitiveWord = '';  //违规词
 
-         $stringAfter = $string;  //替换后的内容
 
-         $list = config('keyworld');  //定义敏感词数组
 
-         $pattern = "/".implode("|",$list)."/i"; //定义正则表达式
 
-         if(preg_match_all($pattern, $string, $matches)){ //匹配到了结果
 
-             $patternList = $matches[0];  //匹配到的数组
 
-             $count = count($patternList);
 
-             //$sensitiveWord = implode(',', $patternList); //敏感词数组转字符串
 
-             //$replaceArray = array_combine($patternList,array_fill(0,count($patternList),'*')); //把匹配到的数组进行合并,替换使用
 
-             $replace_arr = [1=>'*',2=>'**',3=>'***',4=>'****',5=>'*****','more'=>'*****...',];
 
-             $replaceArray = [];
 
-             foreach($patternList as $key => $val){
 
-                 $replaceArray[$val] = isset($replace_arr[mb_strlen($val)]) ? $replace_arr[mb_strlen($val)] : $replace_arr['more'];
 
-             }
 
-             $stringAfter = strtr($string, $replaceArray); //结果替换
 
-         }
 
-         /*$rs = [];
 
-         $rs['string'] = $string;
 
-         $rs['count'] = $count;
 
-         $rs['keyworld'] = $patternList;
 
-         $rs['newstring'] = $stringAfter;*/
 
-         return $stringAfter;
 
-     }
 
-     public static function sensitive($string){
 
-         if(empty($string)){
 
-             return $string;
 
-         }
 
-         $list = config('keyworld');  //定义敏感词数组
 
-         $replaceArray = [];          //含有的违禁词集合
 
-         foreach($list as $key => $word){
 
-             if(empty($word)){
 
-                 continue;
 
-             }
 
-             $start = strpos($string,$word);
 
-             if($start !== false){
 
-                 $replaceArray[$word] = '*';
 
-             }
 
-         }
 
-         $stringAfter = strtr($string, $replaceArray); //结果替换
 
-         return $stringAfter;
 
-     }
 
-     public static function checkAction($data,$fields){
 
-         //$string = 'likeyou小白喜欢小黑爱着的大黄'; //要过滤的内容
 
-         foreach($data as $key => $string){
 
-             if(in_array($key,$fields)){
 
-                 $data[$key] = self::sensitive($string);
 
-             }
 
-         }
 
-         return $data;
 
-     }
 
- }
 
 
  |