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


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 相关文章推荐
PHP 反向排序和随机排序代码
Jun 30 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
PHP重定向的3种方式
Mar 07 PHP
深入密码加salt原理的分析
Jun 06 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
Jun 25 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
laravel 时间格式转时间戳的例子
Oct 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
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
JS变量及其作用域
2017/03/29 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Apache如何部署django项目
2017/05/21 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
教学个人的自我评价分享
2014/02/16 职场文书
小学教师评语大全
2014/04/23 职场文书
2014年教务工作总结
2014/12/03 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL