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     }
  • 相关阅读:
    解决Linux中Too many open files问题
    10个必需的iOS开发工具和资源
    @ModelAttribute跟@SessionAttributes的应用
    7个改变世界的Java项目
    Java序列化与反序列化
    微软推出“IE9梦幻任务栏Pin计划”
    java中replace和replaceAll的区别
    【转】hibernate中annotation方式SchemaExport无法生成表的原因(ORA02261)
    permgen space报错
    em和px
  • 原文地址:https://www.cnblogs.com/redfire/p/7702065.html
Copyright © 2011-2022 走看看