我在PHP中使用preg_replace
和preg_match
,在这个字符集中工作:Cyrillic Windows 1251。
我正在尝试使用不区分大小写的修饰符来匹配单词。
我做了这些测试:
$pattern = '/myCyrillicWord1|myCyrillicWord2/i';
$subject = 'Am I able to find MYCyrILlicWord1?';
$res = preg_replace($pattern, 'matched', $subject);
在UTF-8上:
使用模式中的utf-8修饰符:
$pattern = '/myCyrillicWord1|myCyrillicWord2/iu';
$output = 'Am I able to find matched or not';
没有:
$pattern = '/myCyrillicWord1|myCyrillicWord2/i';
$output = 'Am I able to find MYCyrILlicWord1 or not';
在Windows 1251上:
$pattern = '/myCyrillicWord1|myCyrillicWord2/i';
$output = 'Am I able to find MYCyrILlicWord1 or not';
正则表达式在utf-8上是功能性的,但在Windows 1251上则不行。 请注意我已经测试了像'х'和'Х'这样的西里尔字母(看起来像拉丁字母'x'和'X')。
我的问题是要知道这种行为是否正常?
如何将Windows 1251字符集中的西里尔字母与不区分大小写的修饰符进行匹配?
非常感谢。
答案 0 :(得分:2)
我不认为PCRE支持字符集,所以你的选择基本上是
/[Дд][Ыы][Кк]/
以匹配Дык
,дыК
等