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


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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
解析PHP提交后跳转
Jun 23 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 PHP
php pdo操作数据库示例
Mar 10 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
PHP之认识(二)关于Traits的用法详解
Apr 11 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
python实现得到一个给定类的虚函数
2014/09/28 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
django-allauth入门学习和使用详解
2019/07/03 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
软件工程师面试题
2012/06/25 面试题
UNIX文件系统常用命令
2012/05/25 面试题
党员干部承诺书
2014/03/25 职场文书
校长寄语大全
2014/04/09 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电