动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

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

作者来源: 
阅读 数 141 人次 , 2006-3-29 4:08:00 


<?
//我只是做一个测试,如果再用类似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;
//只是一个简单的测试,希望对你有所帮助,希望你能举一反三,好运!

?>

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Win32下具体实现Apache的用户验证
· 下一篇:PHP实现的功能是显示8条基色色带
· Coding PHP with register_globals Off
· PHP利用COM对象访问SQLServer、Access
· GNU 记录函数库
· Vmailmgr 邮件处理函数库
· 如何修改mysql_connections和其他参数的大小


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077