preg_match中文的问题
# 我想检查变量的值是否全部为单词,可以为中文文字或英文字母,其他的诸如空格、逗号等符号不允许通过#
# 但是在有的服务器上以下正则只要包含非英文字母就匹配失败
#
# 想请教下各位,这个问题会有哪些原因引起
#
# 我本地为fedora19,使用默认的英文
# 一台centos 6服务器,也是使用默认的英文
# 一台redhat 5服务器,估计使用的是中文,ssh终端都会有乱码;中国万网提供的主机
# 出问题的是万网上的radhat,只有全部字符为英文字母才能通过
$name='某的中文名字orEnlishName';
if(!preg_match('#^\w+$#u', $name)){
echo '名字格式有错';
return;
}
# 除了在万网的主机外,其他的都能正常到达这里
echo $name;
# 以上问题改了很多地方,比如系统的字符编码,都未能成功
# 所以这里向各位高人求助了 preg_match("/[\w\w\x80-\xff]+/",$name,$match); 楼上的应该可以! 谢谢啦,确实是这种思路做的。
具体原因搞清楚了,5.2的php preg正则不支持u模式,所以只能使用\xXXX这种好像叫做unicode特性来匹配,匹配中文范围[\x{4E00}-\x{9FA5}]
回复 2# bikong0411
页:
[1]