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


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实现多服务器共享SESSION数据的方法
Mar 16 PHP
php下载远程文件类(支持断点续传)
Nov 14 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
php文件读取方法实例分析
Jun 20 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
php实现购物车功能(下)
Jan 05 PHP
Yii多表联合查询操作详解
Jun 02 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
PHP数组操作简单案例分析
Oct 15 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中如何在有限的内存中读取大文件
2013/07/02 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
ie focus bug 解决方法
2009/09/03 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
Vue 请求传公共参数的操作
2020/07/31 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
django_orm查询性能优化方法
2018/08/20 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
pandas 空数据处理方法详解
2019/11/02 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
写给女朋友的道歉信
2014/01/12 职场文书
学校读书活动总结
2014/06/30 职场文书
2014年外联部工作总结
2014/11/17 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL