标签: php preg-match cyrillic
我正在使用这样的模式在我的文本中找到西里尔符号,但它在unicode货币符号“₴”(乌克兰语hryvnya)和“€”(欧元)上返回true
$pat = '/.*[А-Яа-яёЁ].*/'; $res = preg_match($pat, $str);
有什么问题?
答案 0 :(得分:2)
您应该使用/u修饰符
/u
$pat = '/.*[А-Яа-яёЁ].*/u'; $res = preg_match($pat, $str);
引用the doc:
你是(PCRE_UTF8) 此修饰符打开与Perl不兼容的PCRE的其他功能。模式和主题字符串被视为UTF-8。
此修饰符打开与Perl不兼容的PCRE的其他功能。模式和主题字符串被视为UTF-8。
Demo。顺便说一句,如果您只检查字符串中是否存在西里尔字母而没有在匹配中执行任何操作(并使用给定的代码),则可以从模式中删除.*个部分。
.*