Home  >  Article  >  Backend Development  >  How to shield and filter specified keywords in php

How to shield and filter specified keywords in php

怪我咯
怪我咯Original
2017-07-12 14:51:163006browse

This article mainly introduces the method of shielding and filtering specified keywords in PHP, including string filtering processing and array traversal and other techniques. It is of great practical value and needs Friends can refer to the following

The example of this article describes the method of blocking and filtering specified keywords in PHP. Share it with everyone for your reference. The specific analysis is as follows:

Implementation ideas:

1. Write the keywords specifically in a text file, one per line, no limit to the number, write as many as you want .
2. PHP reads the keyword text and stores it in an array
3. Traverse the keyword array and use the strpos function one by one to see if there are keywords in the content. If there are keywords, return true, if not, return false

PHP code is as follows:

/* PHP中用strpos函数过滤关键字 */
// 关键字过滤函数
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]==&#39;&#39;){
continue; 
} 
// 如果检测到关键字,则返回匹配的关键字,并终止运行
if(@strpos($str,trim($arr[$i]))!==false){
//$i=$k; 
return $arr[$i];
} 
}
// 如果没有检测到关键字则返回false 
return false;
} 
$content = &#39;这里是要发布的文本内容。。。&#39;; 
// 过滤关键字
$keyWord = keyWordCheck($content);
// 判断是否存在关键字
if($keyWord){
echo &#39;你发布的内容存在关键字&#39;.$keyWord;
}else{
echo &#39;恭喜!通过关键字检测&#39;;
// 往下可以进行写库操作完成发布动作。
}

Example 2 (Note: The keyword file used when filtering Chinese keywords is utf-8 encoded)

The code is as follows:

/**
 * 被禁止的关键字检测
 *
 * @param string $string  要检测的字符串
 * @param string $fileName 屏蔽关键字文件
 * @return bool
 */
function banwordCheck( $string, $fileName )
{
 if ( !($words = file_get_contents( $fileName )) ){
  die(&#39;file read error!&#39;);
 }
 $string = 
strtolower
($string);
 $matched = preg_match(&#39;/&#39;.$words.&#39;/i&#39;, $string, $result);
 if ( $matched && isset($result[0]) && strlen($result[0]) > 0 )
 {
  if ( strlen($result[0]) == 2 ){
   $matched = preg_match(&#39;/&#39;.$words.&#39;/iu&#39;, $string, $result);
  } 
  if ( $matched && isset($result[0]) && strlen($result[0]) > 0 ) {
   return true;
  }else{
   return false;
  }  
 }else{
  return false;
 }
}
$content = &#39;测试关键字&#39;;
if ( banwordCheck($content, &#39;./banwords.txt&#39;) ){
 echo "matched! ";
}else{
 echo "no match! ";
}

The above is the detailed content of How to shield and filter specified keywords in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn