正则表达式,又称规则表达式。(英语:regular expression,在代码中常简写为regex、regexp或re),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
本文讲述php实现的敏感词过滤方法,涉及php字符串正则匹配、分割、转换等相关操作技巧
1、敏感词过滤方法
/
* @todo 敏感词过滤,返回结果
* @param array $list 定义敏感词一维数组
* @param string $string 要过滤的内容
* @return string $log 处理结果
*/
function sensitive($list, $string){
$count = 0; //违规词的个数
$sensitiveword = ''; //违规词
$stringafter = $string; //替换后的内容
$pattern = /.implode(|,$list)./i; //定义正则表达式
if(preg_match_all($pattern, $string, $matches)){ //匹配到了结果
$patternlist = $matches[0]; //匹配到的数组
$count = count($patternlist);
$sensitiveword = implode(',', $patternlist); //敏感词数组转字符串
$replacearray = array_combine($patternlist,array_fill(0,count($patternlist),'*')); //把匹配到的数组进行合并,替换使用
$stringafter = strtr($string, $replacearray); //结果替换
}
$log = 原句为 [ {$string} ]<br/>;
if($count==0){
$log .= 暂未匹配到敏感词!;
}else{
$log .= 匹配到 [ {$count} ]个敏感词:[ {$sensitiveword} ]<br/>.
替换后为:[ {$stringafter} ];
}
return $log;
}2、调用方法
function testaction(){
$string = 'likeyou小白喜欢小黑爱着的大黄'; //要过滤的内容
$list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you']; //定义敏感词数组
$result = $this->sensitive($list, $string);
echo ($result);
die;
//打印结果:
/*
原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
替换后为:[ like喜欢*爱着的大黄 ]
*/
}
腾讯云服务器怎么开发工具icp备案变更否会像备案时一样复杂定制网站一般多少钱?有何优势?如何给主域名添加二级域名 二级域名的申请步骤有哪些网站定做的流程是怎样的?网站定做的费用是多少?你知道企业logo吗?如何设计一个企业logo域名证书是什么意思?顶级域名证书有什么作用?高防云服务器100g