• php查找/过滤一段文字中的违禁词敏感词


    <?php
       //定义编码  
      header( 'Content-Type:text/html;charset=utf-8 ');  
      
       $words=array('我','你','他');
       $content="测一测我是不是违禁词";
       $banned=generateRegularExpression($words);
      //检查违禁词
       $res_banned=check_words($banned,$content);
       write_html($content,$res_banned);
      
      /**
         * @describe 数组生成正则表达式
         * @param array $words
         * @return string
         */
        function generateRegularExpression($words)
        {
            $regular = implode('|', array_map('preg_quote', $words));
            return "/$regular/i";
        }
    	/**
         * @describe 字符串 生成正则表达式
         * @param array $words
         * @return string
         */
    	function generateRegularExpressionString($string){
              $str_arr[0]=$string;
              $str_new_arr=  array_map('preg_quote', $str_arr);
              return $str_new_arr[0];
        }
    	/**
         * 检查敏感词
         * @param $banned
         * @param $string
         * @return bool|string
         */
    	function check_words($banned,$string)
        {    $match_banned=array();
            //循环查出所有敏感词
    
            $new_banned=strtolower($banned);
            $i=0;
            do{
                $matches=null;
                if (!empty($new_banned) && preg_match($new_banned, $string, $matches)) {
                    $isempyt=empty($matches[0]);
                    if(!$isempyt){
                        $match_banned = array_merge($match_banned, $matches);
                        $matches_str=strtolower(generateRegularExpressionString($matches[0]));
                        $new_banned=str_replace("|".$matches_str."|","|",$new_banned);
                        $new_banned=str_replace("/".$matches_str."|","/",$new_banned);
                        $new_banned=str_replace("|".$matches_str."/","/",$new_banned);
                    }
                }
                $i++;
                if($i>20){
                    $isempyt=true;
                    break;
                }
            }while(count($matches)>0 && !$isempyt);
    
            //查出敏感词
            if($match_banned){
                return $match_banned;
            }
            //没有查出敏感词
            return array();
        }
    	
    	  /**
         * 打印到页面上
         * @param $filepath
         * @param $res_mingan
         * @param $res_banned
         */
        function write_html($content,$res_banned){
          
                print_r($content);
                if($res_banned){
                    print_r("  <font color='red'>违禁词(".count($res_banned)."):</font>".implode('|',$res_banned));
                }
                echo "<br>";
           
        }
    

      

  • 相关阅读:
    Struts系列教材 (十九)- 其他
    Struts系列教材 (十八)- 其他
    Struts系列教材 (十七)- 其他
    Struts系列教材 (十六)- 标签
    Struts系列教材 (十五)- 标签
    Struts系列教材 (十四)- 标签
    Struts系列教材 (十三)- 标签
    Struts系列教材 (十二)- 标签
    Struts系列教材 (十一)- 标签
    ios中二维码的使用之二: 二维码的扫描
  • 原文地址:https://www.cnblogs.com/kingchou/p/7943446.html
Copyright © 2020-2023  润新知