如何过滤高亮显示非法字符


Posted in PHP onOctober 09, 2006

<?
//我只是做一个测试,如果再用类似tmd的字符串,一定要注意,如果字符串中的字符出现在$StartReplaceHtml或者$EndReplaceHtml中,你需要修改下面的preg_replace中的规则
$CheckedMessage="Hello!!他X的..他....X...的....How are you m d ";     //the message to be checked
echo $CheckedMessage."<br>";
$CheckedWords=array("他X的","tmd");//要过滤的非法字符,如果你需要把单个的字符也过滤,比如:他ererX000的过滤出来他,X,的,你就没必要把过滤字符设置成"他X的"只要设置成$CheckedWords=array("他","X","的");就可以了
$StartReplaceHtml="<u><b><font color='#FF0000'>";
$EndReplaceHtml="</font></b></u>";
$CheckOther= true;//设置标示位,是否显示单个的字符,如果设置成true,下面的if(strstr……)就不需要了
for($i=0;$i<count($CheckedWords);$i++){
     if(strstr($CheckedMessage,$CheckedWords[$i])){ //此处可去掉
         $CheckedMessage=eregi_replace($CheckedWords[$i],$StartReplaceHtml.$CheckedWords[$i].$EndReplaceHtml,$CheckedMessage);//如果只过滤诸如"他X的"字符串(是字符串,不是单个字符),可以直接写这句,同时把$CheckOther设置成false
     }
     if($CheckOther == true){
         $CharStringLength = strlen($CheckedWords[$i]);
         for($j=0;$j<$CharStringLength;$j++){
             $AssumeLength=1;//假定截取长度
             if(ord(substr($CheckedWords[$i],$j,$AssumeLength))>0xa0){//如果汉字,假定长度加一
                $AssumeLength++;         
             }
             $SubstrChar = substr($CheckedWords[$i],$j,$AssumeLength);             
             $CheckedMessage=preg_replace("/(?<!fon)".$SubstrChar."/",$StartReplaceHtml.$SubstrChar.$EndReplaceHtml,$CheckedMessage);//替换字符,同时如果字符含有t的时候<font>中的t不会被替换,如果需要过滤掉在$StartReplace或者在$EndReplaceHtml中的的字符,需要修改规则,否则的话将会出现乱码             
             if($AssumeLength!=1){//如果当前截取字符为汉字
             $j++;        
             }

         }
     }
}
echo $CheckedMessage;
//只是一个简单的测试,希望对你有所帮助,希望你能举一反三,好运!

?>

PHP 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
无限级别菜单的实现
Oct 09 #PHP
综合图片计数器
Oct 09 #PHP
php,不用COM,生成excel文件
Oct 09 #PHP
PHP中GET变量的使用
Oct 09 #PHP
一个ORACLE分页程序,挺实用的.
Oct 09 #PHP
通过ICQ网关发送手机短信的PHP源程序
Oct 09 #PHP
搜索引擎技术核心揭密
Oct 09 #PHP
You might like
javascript下function声明一些小结
2007/12/28 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
Python制作爬虫抓取美女图
2016/01/20 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
详解重置Django migration的常见方式
2019/02/15 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python selenium循环登陆网站的实现
2019/11/04 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
教师工作自我鉴定范文
2014/09/14 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
现场施工员岗位职责
2015/04/11 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
单方投资意向书
2015/05/11 职场文书
入党培养人考察意见
2015/06/08 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android