• 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     }
  • 相关阅读:
    pyspider安装
    阿里云服务器数据盘扩容
    笔记之Python网络数据采集
    Nginx如何隐藏index.html
    使用fiddler手机抓包
    Git基本常用命令
    27 和为S的两个数字
    26 函数形参值回传问题——C++解决多个return的一般方法
    25 面向对象设计实例——基于PCL点云库的通用工具开发
    23 Pro/E二次开发中的问题记录
  • 原文地址:https://www.cnblogs.com/redfire/p/7702065.html
Copyright © 2020-2023  润新知