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


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 特殊字符处理函数
Sep 05 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 PHP
php 过滤器实现代码
Aug 09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
Memcached介绍及php-memcache扩展安装
Apr 01 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数组
2006/10/09 PHP
在PHP中使用模板的方法
2008/05/24 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
golang与PHP输出excel示例
2016/07/22 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python使用arcpy.mapping模块批量出图
2017/03/06 Python
PyQt5实现下载进度条效果
2018/04/19 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
开业庆典答谢词
2014/01/18 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
党小组考察意见
2015/06/02 职场文书
矛盾论读书笔记
2015/06/29 职场文书
2016高考感言
2015/08/01 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python