正则为何不能匹配中文(UTF8)+英文,多谢 "/^[".chr(0xa1)."-".chr(0xff)."]+$/"匹配中文的! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充~~我又多试验了几次,发现有时 英文+中文+数字 才会false如:“sd的123”但是“ff方法23”就是true...晕死 utf8是多字节的直接用char可能不行的可以看看正则的u标记,和utf8下的的字符表示方法 多谢1f,但那个貌似不能匹配utf8字符集的中文~~页面是http://www.wowsk.info/reg_guide.php可以用“工会名称”试验~~ $str = "php编程";if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {print("该字符串全部是中文");} else {print("该字符串不全部是中文");}网上找的 我没说清楚,sorry我想实现的是随便输入英文、数字、中文都可以,现在试了许多匹配,大多都pass了,只有那个“sd的123”卡住了不知道是因为什么~~ /[\x7f-\xff\d\w]+/i英文数字字母都可以的,不区别编码,gb2312,utf-8都可以. $str = "sd的123";if (preg_match("/^([{\x{4e00}-\x{9fa5}]|[0-9a-zA-Z])+$/u",$str)) {print("通过");} else {print("通不过");} 手上说:在“\x”之后最多再读取两个十六进制数字(其中的字母可以是大写或小写)。在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。 所以,建议仍用\x{...},如果准确匹配utf8,要用它,因为gb,gbk均是双字节的,如果匹配gb,gbk,没有问题,但utf8有为1-4字节,可能会出错 我没有仔细看手册.呵呵,看来得好好研究一下.\u的哪个其实也可以,只是preg_match不支持\u的写法,NN个雄. 我也是临时看了一下,不一定准确,回头再看看utf8编码规则 $str = "sd的123"; if (preg_match("/^([{\x{4e00}-\x{9fa5}]|[0-9a-zA-Z])+$/u",$str)) { print("通过"); } else { print("通不过"); }pass/[\x7f-\xff\d\w]+/i这个连标点也能输入...呵呵结贴 " 和 " 的区别 备份工具ebak的问题,在线等 表格提交的数据如何能简单替换某些字符? 文章缩列问题 sql语法错误?? 怎样将mysql里的字符转为unicode? 小问题!但是我很急! 问个紧急的问题。。。 一个php的问题,请帮忙。 谁知道 www.nexenservices.com 到底是不是免费的? 图片显示,PHP简单问题,帮解决下 文件留言显示问题
如:“sd的123”
但是“ff方法23”就是true...晕死
直接用char可能不行的
可以看看正则的u标记,和utf8下的的字符表示方法
http://www.wowsk.info/reg_guide.php可以用“工会名称”试验~~
if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}网上找的
/[\x7f-\xff\d\w]+/i英文数字字母都可以的,不区别编码,gb2312,utf-8都可以.
if (preg_match("/^([{\x{4e00}-\x{9fa5}]|[0-9a-zA-Z])+$/u",$str)) {
print("通过");
} else {
print("通不过");
}
手上说:
在“\x”之后最多再读取两个十六进制数字(其中的字母可以是大写或小写)。在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。 所以,建议仍用\x{...},如果准确匹配utf8,要用它,因为gb,gbk均是双字节的,如果匹配gb,gbk,没有问题,但utf8有为1-4字节,可能会出错
呵呵,看来得好好研究一下.
\u的哪个其实也可以,只是preg_match不支持\u的写法,NN个雄.
if (preg_match("/^([{\x{4e00}-\x{9fa5}]|[0-9a-zA-Z])+$/u",$str)) {
print("通过");
} else {
print("通不过");
}pass/[\x7f-\xff\d\w]+/i
这个连标点也能输入...呵呵结贴