8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 PCRE/PHP 中匹配 Unicode 字母字符

volkerschulz 2月前

50 0

我正在尝试用 PHP 编写一个合理宽松的名称验证器,我的第一次尝试包括以下模式:// unicode 字母、撇号、连字符、空格$namePattern = \'/^([\\...

我正在尝试用 PHP 编写一个合理允许的名称验证器,我的第一次尝试包含以下模式:

// unicode letters, apostrophe, hyphen, space
$namePattern = "/^([\\p{L}'\\- ])+$/";

这最终被传递给对 的调用 preg_match() 。据我所知,这适用于普通的 ASCII 字母表,但似乎会遇到更复杂的字符,如 Ă 或 。

模式本身有问题吗?也许我期望 \p{L} 做的工作比我想象的要多?

或者这是否与输入传递的方式有关?我不确定这是否相关,但我确实确保在表单页面上指定了 UTF8 编码。

帖子版权声明 1、本帖标题:在 PCRE/PHP 中匹配 Unicode 字母字符
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由volkerschulz在本站《regex》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 首先,如果您在编写这些内容时使用单撇号而不是双引号,您的生活会轻松很多——您只需要一个反斜杠。其次, \pM 还应包括组合标记。如果您发现不匹配的字符,请找出其 Unicode 代码点,然后您可以使用 http://www.fileformat.info/info/unicode/ 找出它的位置。我发现 http://hsivonen.iki.fi/php-utf8/ 在使用 UTF-8 属性进行调试时是一个非常有用的工具(在尝试查找之前,不要忘记转换为十六进制:) array_map('dechex', utf8ToUnicode($text))

    例如,Ă 实际上是 http://www.fileformat.info/info/unicode/char/0102/index.htm ,属于 Lu,因此 L 应该匹配,而且对我来说确实匹配。另一个字符是 http://www.fileformat.info/info/unicode/char/5f20/index.htm ,也是 isLetter,对我来说确实匹配。您有编译好的 Unicode 字符表吗?

返回
作者最近主题: