Я использую preg_replace
и preg_match
с PHP, работаю в этой кодировке: кириллица 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 с модификатором без учета регистра?
Большое спасибо.