免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3902 | 回复: 3
打印 上一主题 下一主题

请教:如何高效替换字符串中的所有非中文字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-04 15:47 |只看该作者 |倒序浏览
字符串编码应该是gb2312,想去除其中的一些格式,如< ...> &nbsp, \n\r等。
preg_replace( '/<.*?>|\n|\r| |"|</', '', $str ),这是抄来瞎改的正则,目前还有许多没去除呢
突然想到我的内容以中文为主,能不能用个省事高效的办法,将非中文字符一下全都去除啊?

多谢了,请赐的方法

[ 本帖最后由 只爱一点点 于 2007-1-4 16:40 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-04 19:58 |只看该作者
preg_replace( '/[^\u4E00-\u9FA5]/', '', $str )
我想用这个替掉所有非汉字的内容,显示这个函数不支持\u这个语法?

我该怎么做?求这个表达式

论坛徽章:
0
3 [报告]
发表于 2007-01-04 20:40 |只看该作者
\u4E00-\u9FA5原来这是Unicode编码

暂时用[^\xa1-\xff]匹配的有非汉字及全角标点,不知有什么bug?

比'/<|>|"|\n|\r|&nbsp;/'是否速度更快?

第一种只所以遍历一次每个字节,做两次比较就行,第二种至少要做六次比较?

[ 本帖最后由 只爱一点点 于 2007-1-5 07:18 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-06-20 10:36 |只看该作者
偶试验拉。怎么都不行啊。。
$a = "asdf我碍你";
$b = str_replace("/^[".chr(0xa1)."-".chr(0xff)."]+$/", "111", $a );
$c = preg_replace("/^[".chr(0xa1)."-".chr(0xff)."]+$/", "111", $a );

echo "1.$b<BR>3.$c";
echo "<BR>$a<BR>";
都替换不了。爱。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP