我们经常会发现我们有提交留方的地方就会有很多的来发广告,后来想做一个屏蔽过滤指定关键字的功能,我搜索了几种方法介绍给大家有需要了解的朋友可参考.
思路:
一、把关键字专门写在一个文本文件里,每行一个,数量不限,有多少写多少.
二、PHP读取关键字文本,存入一个数组.
三、遍历关键字数组,挨个用strpos函数去看看内容有没有关键字,如果有,返回true,没有则返回false.
PHP代码如下:
-
-
- function keyWordCheck($content){
-
- $content = trim($content);
-
- $content = @file_get_contents('keyWords.txt');
-
- $arr = explode("n", $content);
-
- for($i=0,$k=count($arr);$i<$k;$i++){
-
- if($arr[$i]==''){
- continue;
- }
-
- if(@strpos($str,trim($arr[$i]))!==false){
-
- return $arr[$i];
- }
- }
-
- return false;
- }
- $content = '这里是要发布的文本内容。。。';
-
- $keyWord = keyWordCheck($content);
-
- if($keyWord){
- echo '你发布的内容存在关键字'.$keyWord;
- }else{
- echo '恭喜!通过关键字检测';
-
- }
例子2 ,注,中文关键字过滤时使用的关键字文件为utf-8编码,代码如下:
-
-
-
-
-
-
-
- function banwordCheck( $string, $fileName )
- {
- if ( !($words = file_get_contents( $fileName )) ){
- die('file read error!');
- }
- $string = strtolower($string);
- $matched = preg_match('/'.$words.'/i', $string, $result);
- if ( $matched && isset($result[0]) && strlen($result[0]) > 0 )
- {
- if ( strlen($result[0]) == 2 ){
- $matched = preg_match('/'.$words.'/iu', $string, $result);
- }
- if ( $matched && isset($result[0]) && strlen($result[0]) > 0 ) {
- return true;
- }else{
- return false;
- }
- }else{
- return false;
- }
- }
-
- $content = '测试关键字';
- if ( banwordCheck($content, './banwords.txt') ){
- echo "matched! ";
- }else{
- echo "no match! ";
- }
|