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


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中英混合字符串截取函数代码
Jul 17 PHP
PHP中PDO的错误处理
Sep 04 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
关于php中的json_encode()和json_decode()函数的一些说明
Nov 20 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
php-msf源码详解
Dec 25 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
PHP合并两个或多个数组的方法
Jan 20 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
php文件上传的简单实例
2013/10/19 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
python修改注册表终止360进程实例
2014/10/13 Python
Python中的变量和作用域详解
2016/07/13 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
python之mock模块基本使用方法详解
2019/06/27 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
python 画图 图例自由定义方式
2020/04/17 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
庆祝教师节活动方案
2014/01/31 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
男方婚礼答谢词
2015/01/20 职场文书
办公室规章制度范本
2015/08/04 职场文书
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android