zoukankan      html  css  js  c++  java
  • 【php】(转载)分享一个好用的php违禁词 处理类

    1、直接上代码:

    <?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>";
            
        }
     
     
  • 相关阅读:
    Django——不同版本
    04爬取拉勾网Python岗位分析报告
    24 两两交换链表中的节点
    UniGUI学习之UniImage(39)
    Delphi7开发简单文件传输
    Javaday03(补充day02运算符,流程控制)
    java中代码块,构造方法和普通方法的代码执行顺序
    +=隐式类型转换
    关于switch中的default
    Java操作JSON数据(5)--jettison操作JSON数据
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/9163262.html
Copyright © 2011-2022 走看看