正则表达式的匹配无效("\pL"在字符类中不起作用)



为什么PHP为当前代码返回0?我只想验证用户名,并允许传递所有可用的字母符号(包括所有像śś?

$var = 'cz -ęsc';
var_dump(preg_match('/^[pL -]{1,35}$/', $var)); // int(0)

您需要通过设置u标志为正则表达式启用Unicode,即:

$var = 'cz -ęsc';
var_dump(preg_match('/^[pL -]{1,35}$/u', $var)); // int(1)

有关详细信息,请参阅文档中的u (PCRE_UTF8)部分:http://php.net/manual/en/reference.pcre.pattern.modifiers.php

最新更新