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


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 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
深入php数据采集的详解
Jun 02 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
php实现无限级分类
Dec 24 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
详解js异步文件加载器
Jan 24 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 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
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
splice slice区别
2006/10/09 Javascript
window.open的功能全解析
2006/10/10 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
JavaScript运算符小结
2015/06/03 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python制作websocket服务器实例分享
2016/11/20 Python
python enumerate函数的使用方法总结
2017/11/15 Python
Python模块文件结构代码详解
2018/02/03 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Python中pillow知识点学习
2018/04/30 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
商品陈列协议书
2014/09/29 职场文书
安全员岗位职责
2015/02/10 职场文书