【发布时间】:2011-01-22 00:56:58
【问题描述】:
我有一个简单的正则表达式来检查用户名:
preg_match('/(*UTF8)^[[:alnum:]]([[:alnum:]]|[ _.-])+$/i', $username);
在本地测试中(使用 WAMP 的 Windows 7),这将允许使用 UTF 字符(例如 é 或 ñ)的用户名。但是,当我在实际托管站点的服务器上进行测试时,我收到以下警告:
警告:preg_match() [function.preg-match]:编译失败:(*VERB) 在第 12 行的 /home/sites/vgmusic.com/test/Core/Impl/FormElementValidator.php 中的偏移 5 处无法识别
我也在本地 Ubuntu 安装上尝试过此操作并得到相同的错误。事实上,我只在我的本地开发环境中看到过这项工作。有没有办法允许适用于所有操作系统的特殊字符?
【问题讨论】:
-
你希望
(*UTF8)做什么? -
好吧,在添加之前,上面的内容会在输入é等字符时返回false。添加后,这些字符被接受并且上面返回true。我期待它允许所说的字符。
-
这几乎可以肯定是 PHP 版本。您正在运行哪些 PHP 版本? phpinfo() 页面是否包含有关 PCRE 版本的任何信息?