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


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 09 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
php获取操作系统语言代码
Nov 04 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
PHP实现登录验证码校验功能
May 17 PHP
yii框架使用分页的方法分析
Jul 25 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
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python爬虫中多线程的使用详解
2019/09/23 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Python 私有化操作实例分析
2019/11/21 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
解决django FileFIELD的编码问题
2020/03/30 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
Python如何输出警告信息
2020/07/30 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
优秀部门获奖感言
2014/02/14 职场文书
化妆品促销方案
2014/02/24 职场文书
兵马俑的导游词
2015/02/02 职场文书