几个月前,you为我的IsAlpha & co问题提供了一个完美的解决方案。但是,在升级PHP (到版本5.2.9)之后,我又一次遇到了问题,尽管ctype_*函数现在似乎可以完成它们的工作:
ctype_alpha( $value ) /* VS */ preg_match("/^[\p{L} _.\-]+$/u", $value)
ctype_alnum( $value ) /* VS */ preg_match("/^[\p{L}0-9 _.\-]+$/u", $value)所谓问题,我的意思是'GB‘或'blablue’被ctype_alpha()正确地识别为alpha,但在preg_match("/^[\p{L} _.\-]+$/u", $value)中却失败了。
如果你有任何想法,请告诉我,我在谷歌上认真搜索了一下后,我把它们都找出来了。
非常,非常感谢!
P.S.在两个环境中,LANG/LC_CTYPE/etc都设置为en_US.UTF-8
发布于 2009-12-23 01:37:47
确保PCRE已使用UTF-8支持和Unicode属性支持进行编译。
if ( ! @preg_match('/^.$/u', 'ñ'))
echo 'PCRE has not been compiled with UTF-8 support.';
if ( ! @preg_match('/^\pL$/u', 'ñ'))
echo 'PCRE has not been compiled with Unicode property support.';来自http://github.com/kohana/kohana/blob/master/install.php的检查。
发布于 2009-12-21 02:42:29
我在托管服务器上使用unicode元字符的正则表达式时遇到了一些问题。问题简而言之:它不起作用。我没有调查真正的原因,因为它是一个临时服务器,但您可以查看unicode支持,因为您的问题似乎类似。
https://stackoverflow.com/questions/1936504
复制相似问题