方法一:
思路

用正则去匹配关键字,把关键字用别的字符替换:

1
2
3
$str "/你大爷|你麻痹|什么玩意|SB|你他妈/";  // 关键字正则字符串 
$string "你他妈干什么玩意了 SB";    // 文本字符串
echo preg_replace($str"*"$string);    //preg_replace() 执行一个正则表达式的匹

方法二:

思路

1.把关键字放到一个txt文档中 要用一定的符合分隔开 ,用file_get_contents() 函数将关键字文档读入

2.用函数explode() 把字符串分割成数组  循环数组 strpos() 查找匹配关键字

 header('content-type:textml; charset=utf-8;');
function strPosFuck($content){
$fuck = file_get_contents('keyWords.txt'); // 读取关键字文本信息
$content = trim($content); $fuckArr = explode("\n",$fuck); // 把关键字转换为数组
for ($i=0; $i < count($fuckArr) ; $i++){
// $fuckArr[$i] = trim($fuckArr[$i]);
if ($fuckArr[$i] == "") {
continue; //如果关键字为空就跳过本次循环
# code...
}
if (strpos($content,trim($fuckArr[$i])) != false){
return $fuckArr[$i]; //如果匹配到关键字就返回关键字
# code...
}
}
return false; // 如果没有匹配到关键字就返回 false
}
$content = "我今天你大爷碰到一个SB";
$key = strPosFuck($content);
if ($key){
echo "存在关键字".$key;
# code...
}else{
echo "OK";
}

注意点   一定要去空  一定要去空 ,

strops() 函数返回值 要么是false 要么就是关键字的位置 判断的时候注意

方法三:

 /**
* 被禁止的关键字检测
*
* @param string $string 要检测的字符串
* @param string $fileName 屏蔽关键字文件
* @return bool
*/
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! ";
}

PHP屏蔽关键字实现方法的更多相关文章

  1. 用C#中的params关键字实现方法形参个数可变

    个人认为,提供params关键字以实现方法形参个数可变是C#语法的一大优点.在方法形参列表中,数组类型的参数前加params关键字,通常可以在调用方法时代码更加精练. 例如,下面代码: class P ...

  2. destoon实现调用热门关键字的方法

    本文所述的destoon调用热门关键字的方法是根据数据库里面的保存的搜索的关键字来显示的.每个模块下面都有各自的关键字下面是调用的标签: ? 1 <!--{tag("moduleid= ...

  3. php类中的$this,static,const,self这几个关键字使用方法

    本篇文章主要分享一下关于php类中的$this,static,final,const,self这几个关键字使用方法 $this $this表示当前实例,在类的内部方法访问未声明为const及stati ...

  4. jQuery过滤HTML标签并高亮显示关键字的方法

    本文实例讲述了jQuery过滤HTML标签并高亮显示关键字的方法.分享给大家供大家参考.具体如下: jQuery实现网页关键字过滤效果,将需要过滤的文字定义在JavaScript中,可定义多个,不过要 ...

  5. DEDE内容页调用栏目的SEO标题、描述、关键字的方法

    上篇写了<dedecms栏目页调用栏目关键词.描述的方法>,本章雨田SEOER讲述DEDE内容页调用栏目的SEO标题.描述.关键字的方法内容页调用SEO标题:在<title>& ...

  6. 【python基础语法】常用内置函数、关键字、方法和之间的区别(小结)

    ''' 关键字: False:bool数据类型 True:bool数据类型 None:表示数据的内容为空 and:逻辑运算符:与 or:逻辑运算符:或 not:逻辑运算符:非 in:身份运算符,判断变 ...

  7. 【synchronized锁】通过synchronized锁 反编译查看字节码指令分析synchronized关键字修饰方法与代码块的区别

    前提: 首先要铺垫几个前置的知识: Java中的锁如sychronize锁是对象锁,Java对象头中具有标识位,当对象锁升级为重量级锁时,重量级锁的标识位会指向监视器monitor, 而每个Java对 ...

  8. 帝国CMS后台采集关键字的方法

    小伙伴们知道帝国CMS后台的采集功能是不能采集关键字的,那么老墨今天给大家说一个变通方法,让后台能采集关键字!方法如下: 1.系统设置--管理数据表--管理字段--增加字段(字段名:keywords字 ...

  9. this关键字、static关键字、方法的调用

    1.带有static关键字的方法,不可使用this关键字.因为其调用方法为类名.方法名(建议这种方式,调用不需要对象的参与),不存在对象. 2.实例方法调用必须有对象的存在,先创建对象,通过引用.的方 ...

随机推荐

  1. OneDrive网页版打不开的解决办法

    发现OneDrive文件被误删了,想去网页版找回历史文件,发现网页版无法打开,而客户端是可以正常使用的,于是猜测是域名指向的主IP被封了,于是想通过客户端的IP访问 第一步,WireShark抓包 第 ...

  2. python学习之aop装饰模式

    实际开发过程当中可能要对某些方法或者流程做出改进,添加监控,添加日志记录等所以我们要去改动已有的代码,自己的或者别人的,但改动后测试不周会引发不可控的异常,aop 模式解决了这类问题引发重复代码大量积 ...

  3. Asp.net页面间传值方式汇总

    七种传值方式,分别是:URL传值,Session传值,Cookie传值,Server.Transfer传值,Application传值,利用某些控件的PostBackUrl属性和使用@Previous ...

  4. Python的Django框架中if标签的相关使用

    {% if today_is_weekend%} {% end if %} 系统会显示在这之间的内容 {% else %}标签是可选的 在python和django模板系统中,以下对象相当于布尔值的F ...

  5. 用hexo搭建自己的blog

    一.工具准备: 1.1 安装node 作用:用来生成静态页面的 到Node.js官网下载相应平台的最新版本,一路安装即可. 1.2 安装Git 作用:把本地的hexo内容提交到github上去. 安装 ...

  6. 一个kafka异常

    卡夫卡经常超时,而且超时时间固定为三分钟,因为时间长度固定,所以逆推一下,发现现有的配置里面有个session的timeout是三分钟,但是其实后来验证发现真是的原因是connect timeout, ...

  7. yii2史上最简单式安装教程,没有之一(转)

    测试说明:按照文章下载文件,虽然是tgz文件,用winrar解压,在CMD中运行init.bat文件. 既然是安装Yii,我们先去官网下载一份Yii的高级模版,什么,你说打开页面乱七八糟的英文字母你看 ...

  8. bzoj 3779 重组病毒 —— LCT+树状数组(区间修改+区间查询)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3779 RELEASE操作可以对应LCT的 access,RECENTER则是 makeroo ...

  9. python 数据库查询结果转对象

    #coding:utf-8 from json import dumps, loads, JSONEncoder, JSONDecoder import pickle from app.model.J ...

  10. WM_COMMAND 和 WM_NOTIFY 的区别

    当我们按下一个菜单选项,或者一个控件需要通知父窗口一个事件发生(如鼠标单击.双击等),或者快捷键被按下时,Windows将会发送一个 WM_COMMAND 消息给父窗口.那么 WM_COMMAND 消 ...