麻烦问下 preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words) 中的/[^chr(128)-chr(256)

ainiaa 2010-07-01 10:00:10
麻烦问下 表达式 preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);中的正则表达式("/[^chr(128)-chr(256)]+/is应该怎么理解?
希望各位DGDJ 不吝赐教
...全文
161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ainiaa 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cfc4n 的回复:]
http://www.cnxct.com/php%e4%b8%ad%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e5%af%b9unicode%e5%ad%97%e7%ac%a6%e7%a0%81%e7%9a%84%e5%8c%b9%e9%85%8d/
这里已经详细分析回复。给俺分。谢谢。^_^
[/Quote]
这个 我就我在phpchina上问的问题。呵呵
不好意思啊。 分都分完了。 多谢
kyzy_yy_pm 2010-07-02
  • 打赏
  • 举报
回复
匹配汉字的方法,不过不是很全的方法
ainiaa 2010-07-02
  • 打赏
  • 举报
回复
好象很难解决的样子

baidu google 都用了 还是没有解决 郁闷疯了 直接
ainiaa 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuzuning 的回复:]
$words = '这是一个测试test';
echo preg_replace("/[^chr(128)-chr(255)]+/is"," ",$words); //test

不匹配扩展ascii编码字符
[/Quote]
麻烦问下 下面的程序
<?php
$words = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!@#$%^&*()_+-=[]\\,./{}|<>?'\"你好啊我们";
$enStr=preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);
$otherStr=preg_replace("/[chr(128)-chr(256)]+/is"," ",$words);
echo 'enStr:',$enStr,'<br />', 'otherStr:',$otherStr;
?>
的结果为
enStr:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ @ ^ *()_+-=[]\,./ <>?
otherStr: ! #$% & {}| '"你好啊我们
为什么 “#”(ascii为35)这样的也会被匹配掉 这点让我理解不了(! #$% & {}| '" 这些的ascii码都小于128)
ainiaa 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amani11 的回复:]
ASC码>=128的,换成空格了,,,像!$#之类的

但是,多个连在一起的话,只换成一个空格
[/Quote]

我也是这么理解的,但是 令我头晕的是 为什么“#”的ascii为35 这样的符合会被匹配
xuzuning 2010-07-01
  • 打赏
  • 举报
回复
$words = '这是一个测试test';
echo preg_replace("/[^chr(128)-chr(255)]+/is"," ",$words); //test

不匹配扩展ascii编码字符
Dleno 2010-07-01
  • 打赏
  • 举报
回复
preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);

preg_replace("/[^".chr(128)."-".chr(256)."]+/is"," ",$words);

chr就是php里的函数
amani11 2010-07-01
  • 打赏
  • 举报
回复
ASC码>=128的,换成空格了,,,像!$#之类的

但是,多个连在一起的话,只换成一个空格
amani11 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jianglin28290 的回复:]

这个chr方法就没有执行,你这个正则表达的意思很奇怪
chr是php的方法
$words = '这是一个测试test';
echo preg_replace("/[^".chr(128)."-".chr(255)"]+/is"," ",$words); //test
[/Quote]

你试试看,preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words); chr是起作用了的,上面同样得到test
jianglin28290 2010-07-01
  • 打赏
  • 举报
回复
这个chr方法就没有执行,你这个正则表达的意思很奇怪
chr是php的方法
$words = '这是一个测试test';
echo preg_replace("/[^".chr(128)."-".chr(255)"]+/is"," ",$words); //test

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧