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


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 相关文章推荐
mysq GBKl乱码
Nov 28 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
Yii2如何批量添加数据
May 17 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
Fleaphp常见函数功能与用法示例
Nov 15 PHP
PHP中串行化用法示例
Nov 16 PHP
PHP进程通信基础之信号
Feb 19 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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
第九节--绑定
2006/11/16 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP中设置时区方法小结
2012/06/03 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
php Session无效分析资料整理
2016/11/29 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Django实现图片文字同时提交的方法
2015/05/26 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
git进行版本控制心得详谈
2017/12/10 Python
详解python中的json和字典dict
2018/06/22 Python
物流仓管员岗位职责
2013/12/04 职场文书
酒店大堂副理的职责范文
2014/02/13 职场文书
2014年元旦活动方案
2014/02/15 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
护士旷工检讨书
2015/08/15 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL