zoukankan      html  css  js  c++  java
  • PHP屏蔽关键字实现方法

    方法一:
    思路

     用正则去匹配关键字,把关键字用别的字符替换:

    1
    2
    3
    $str = "/你大爷|你麻痹|什么玩意|SB|你他妈/" // 关键字正则字符串 
    $string = "你他妈干什么玩意了 SB";    // 文本字符串
    echo preg_replace($str, "*", $string);    //preg_replace() 执行一个正则表达式的匹

    方法二:

    思路

    1.把关键字放到一个txt文档中 要用一定的符合分隔开 ,用file_get_contents() 函数将关键字文档读入

    2.用函数explode() 把字符串分割成数组  循环数组 strpos() 查找匹配关键字

     1 header('content-type:textml; charset=utf-8;');
     2 function strPosFuck($content){
     3     $fuck = file_get_contents('keyWords.txt'); // 读取关键字文本信息
     4     $content = trim($content); $fuckArr = explode("
    ",$fuck); // 把关键字转换为数组
     5     for ($i=0; $i < count($fuckArr) ; $i++){
     6     // $fuckArr[$i] = trim($fuckArr[$i]);
     7        if ($fuckArr[$i] == "") {
     8             continue; //如果关键字为空就跳过本次循环
     9             # code...
    10         }
    11         if (strpos($content,trim($fuckArr[$i])) != false){
    12             return $fuckArr[$i]; //如果匹配到关键字就返回关键字
    13             # code...
    14         }
    15     } 
    16     return false; // 如果没有匹配到关键字就返回 false
    17 }
    18     $content = "我今天你大爷碰到一个SB";
    19     $key = strPosFuck($content);
    20     if ($key){
    21         echo "存在关键字".$key;
    22         # code...
    23     }else{
    24         echo "OK";
    25     }

    注意点   一定要去空  一定要去空 ,

    strops() 函数返回值 要么是false 要么就是关键字的位置 判断的时候注意

     

    方法三:

     1 /**
     2 * 被禁止的关键字检测
     3 *
     4 * @param string $string 要检测的字符串
     5 * @param string $fileName 屏蔽关键字文件
     6 * @return bool
     7 */
     8 function banwordCheck( $string, $fileName ){
     9     if ( !($words = file_get_contents( $fileName )) ){
    10         die('file read error!');
    11     }
    12     $string = strtolower($string);
    13     $matched = preg_match('/'.$words.'/i', $string, $result);
    14     if ( $matched && isset($result[0]) && strlen($result[0]) > 0 ){
    15         if ( strlen($result[0]) == 2 ){
    16             $matched = preg_match('/'.$words.'/iu', $string, $result);
    17         }
    18         if ( $matched && isset($result[0]) && strlen($result[0]) > 0 ) {
    19             return true;
    20         }else{
    21             return false;
    22         }
    23     }else{
    24         return false;
    25     }
    26 }
    27     $content = '测试关键字';
    28     if ( banwordCheck($content, './banwords.txt') ){
    29         echo "matched! ";
    30     }else{
    31         echo "no match! ";
    32     }
  • 相关阅读:
    微信公众号开发之用户地理位置坐标转百度坐标
    PHP变量入门教程(1)基础
    【很变态】PHP类实例化对象竟然可以访问类的“静态(static)方法”!!!
    【转】记录PHP、MySQL在高并发场景下产生的一次事故
    PHP返回32位与16位的md5加密值
    PhpStorm 8.x/9.x 快捷键设置/个性化设置,如何多项目共存?如何更换主题?
    Linux设置Memcached开机启动
    【荐】MongoDB基本命令大全
    【荐】PHP操作MongoDB GridFS 存储文件,如图片文件
    Shell入门教程:流程控制(7)break和continue
  • 原文地址:https://www.cnblogs.com/redfire/p/7702065.html
Copyright © 2011-2022 走看看