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

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

volkerschulz 2月前

48 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)
  • 如果你想用 Unicode 替换它, old pattern 这样 new pattern 写:

    $text = preg_replace('/\bold pattern\b/u', 'new pattern', $text);
    

    所以这里的关键是 u 修饰符

    注意 :您的服务器 php version 至少应 PHP 4.3.5

    如上所述 php.net | 模式修饰符

    u (PCRE_UTF8) 此修饰符打开了与 Perl 不兼容的 PCRE 的附加功能。模式字符串被视为 UTF-8。此修饰符在 Unix 上从 PHP 4.1.0 或更高版本开始可用,在 win32 上从 PHP 4.2.3 开始可用。自 PHP 4.3.5 起,将检查模式的 UTF-8 有效性。

    谢谢 AgreeOrNot 谁给我这个密钥 preg_replace 匹配阿拉伯语中的整个单词

    我尝试了一下,它在本地主机上工作,但是当我在远程服务器上尝试它时它不起作用,然后我发现 php.net u 在 PHP 4.3.5 中启动使用修饰符。,我升级了 php 版本并且它工作了

    重要的是要知道这种方法对阿拉伯语用户(عربي)非常有用,因为 - 正如我所相信的 - unicode 是阿拉伯语的最佳编码,如果不使用修饰符,替换将不起作用 u ,请参阅下一个示例,它应该适用于你

    $text = preg_replace('/\bمرحبا بك\b/u', 'NEW', $text);

返回
作者最近主题: