方法一:
思路
用正则去匹配关键字,把关键字用别的字符替换:
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 }