PHP正则表达式不';不能在真正的服务器上工作
我有正则表达式来检测西里尔语的名字、中间名和姓氏PHP正则表达式不';不能在真正的服务器上工作,php,regex,Php,Regex,我有正则表达式来检测西里尔语的名字、中间名和姓氏 ([А-Я][а-я]+\s+[А-Я][а-я]+[.|\s|][А-Я][а-я]+[.|\s|]) 使用: preg_match_all('/([А-Я][а-я]+(\\s|.|[ ])[А-Я][а-я]+(\\s|.|[ ])[А-Я][а-я]+)/','it\'s a test string with a name like Васильців Василь Васильович and Петро Петрович Петре
([А-Я][а-я]+\s+[А-Я][а-я]+[.|\s|][А-Я][а-я]+[.|\s|])
使用:
preg_match_all('/([А-Я][а-я]+(\\s|.|[ ])[А-Я][а-я]+(\\s|.|[ ])[А-Я][а-я]+)/','it\'s a test string with a name like Васильців Василь Васильович and Петро Петрович Петренко смисми ВВ Аммм Мммм Аааааа',$ar);
结果是:
Array
(
[0] => Array
(
[0] => �асил�
[1] => �асил�
[2] => �асильови�
[3] => енко
[4] => мисми
[5] => �ааааа
)
[1] => Array
(
[0] => �асил�
[1] => �асил�
[2] => �асильови�
[3] => енко
[4] => мисми
[5] => �ааааа
)
[2] => Array
(
[0] => �
[1] => �
[2] => �
[3] => �
[4] => �
[5] => �
)
[3] => Array
(
[0] => �
[1] => �
[2] => �
[3] => �
[4] => �
[5] => �
)
)
它在PHP中运行良好,但在PHP中不起作用(它检测错误的文本部分)。
你能解释一下什么地方出了问题,或者提示我使用更好的在线服务吗?我有一个-u
选项运行良好:
preg_match_all('/([А-ЯЁ][ёа-я]+(?:[\\s.][ЁА-Я][ёа-я]+){2})/u','it\'s a test string with a name like Васильців Василь Васильович and Петро Петрович Петренко смисми ВВ Аммм Мммм Аааааа',$ar);
print_r($ar);
此外,我将空间部分收缩为一个未被美化的时期,以及模式本身
输出:
Array
(
[0] => Array
(
[0] => Петро Петрович Петренко
[1] => Аммм Мммм Аааааа
)
[1] => Array
(
[0] => Петро Петрович Петренко
[1] => Аммм Мммм Аааааа
)
)
检查添加
u
是否有帮助:'/([А-Я][а-а]+(\\s |.|]])[А-Я][Я-а]+[u'
您尝试过unicode转义\uxxx吗?还有一个问题:如果您还想捕获字母ё
,则需要将其作为单独的字符添加到范围中。对不起,开始时忘记了,现在添加。(如果答案对你有用的话,请考虑一下投票。)