回复: [thinkinlamp] 请教大家一个关于php字符串查找与替换来过滤垃圾信息的问题

15 views
Skip to first unread message

傻傻等你??

unread,
Oct 6, 2012, 12:01:50 PM10/6/12
to thinkinlamp
刚刚找了下所有的汉字, 使用gbk编码 utf8编码. 两种方式存储. 然后, 用mb_check_encoding函数检测.
gbk编码的时候, 检测是否为utf8. 检测通过的文字一共有1920个.
utf8编码的时候,检测是否为gbk. 检测通过的文字一共有327个.
汉字总数是20881个. 
测试utf8编码的汉字. 连续两个一起,被识别为gbk的可能性几乎为0(测试的时候是0个,但是可能两个连续的可被识别为gbk的就悲剧了)


------------------ 原始邮件 ------------------
发件人: "童中波"<eas...@gmail.com>;
发送时间: 2012年10月6日(星期六) 晚上11:18
收件人: "thinkinlamp"<think...@googlegroups.com>;
主题: Re: [thinkinlamp] 请教大家一个关于php字符串查找与替换来过滤垃圾信息的问题

估计原因是编码不一致。
两种解决方案:
1.确定要过滤的文字$newinfo的编码,然后将敏感字符"務"转成相同编码,再进行过滤
2.如果不好确定过滤文字编码,将敏感字符转成各种可能编码,再进行过滤
2012/10/6 Marvin Ma <samo...@gmail.com>
如果你是UTF8编码的话,可以用 preg_replace() 来实现:

$newinfo='惠州有小q姐包夜Q服務电话182xxxxxxx8';
$re = preg_replace("/務/u", "", $newinfo);
print_r($re);


2012/10/6 Jie Hu <xsi...@gmail.com>
不知道mb_substr之類的方法可以用不?指定編碼看看是否能匹配到。

在 2012年10月6日 上午5:43,Sm Liu <sms...@gmail.com>写道:

str_replace函数因为不兼容双字节,所以查找时经常出现故障,查了一下百度,看到有人说使用mb_ereg_replace函数,但是我用这个函数经常出现明明有敏感字符,却出现无法过滤的情况,不知道是什么原因?
$newinfo='惠州有小q姐包夜Q服務电话182xxxxxxx8';
$tmpstr=mb_ereg_replace('務', '', $newinfo);
这样执行出来的结果却是$tmpst和$newinfo是同样的,没法过滤掉那个“務”字,正确的写法应该是怎么样的呢?


--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758

--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758



--
Best Regards,
Marvin Ma
QQ:397337097  Sina:@三马  Tel:15921270388


--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758



--
童中波
工程帅/研发中心-WEB研发部
 
湖北盛天网络技术股份有限公司
Hubei Century Network Technology Co., Ltd.
Fax: (86-27) 8749 8500
Add:武汉市东湖高新技术开发区国际企业中心2期1栋
Zip code: 430074

--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
allword.txt

张伟

unread,
Oct 6, 2012, 6:57:31 PM10/6/12
to think...@googlegroups.com
不判断字符集,直接try
replace("utf8")|| replace("gbk")

在 2012年10月7日星期日,傻傻等你?? 写道:
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
Reply all
Reply to author
Forward
0 new messages