Регулярка, ригистронезависимость, русский

Статус
В этой теме нельзя размещать новые ответы.

studentpm

Постоялец
Регистрация
8 Ноя 2006
Сообщения
184
Реакции
133
Как заставить регулярки работать с русским текстом в регистронезависимом режиме?
Пример кода:
PHP:
<?php

    $str = 'lorem LOREM Lorem Лорем ЛОРЕМ лорем';

    $str = preg_replace("/(лорем|lorem)/i", '<b>$1</b>', $str);

    print $str;

?>
На выходе каждое слово должно, по идее, обромиться тегом <b> но на деле обрамится только английский и русский с совпадающим регистром.
Кодировка текста не влияет на результат(пробовал cp1251 и utf-8). Проблему наблюдаю на 3х разных хостингах и локальной машине(везде линух).
Какие будут идеи?
 
setlocale(LC_ALL,'ru_RU.CP1251');

?
 
Не, так тоже не пашет =(
 
тогда такой вариант:)
PHP:
     $str = preg_replace("/([лЛ][оО][рР][еЕ][мМ]|[lL][oO][rR][eE][mM])/i", '<b>$1</b>', $str);
 
setlocale(LC_ALL,'ru_RU.CP1251');
?
немного нубский вопрос: :)
установка локали действует так, что флаг i работает теперь только для русских символов или для русских и английских одновременно (т.е. просто "подключаются" русские буквы)?

по идее вариант 2
 
немного нубский вопрос: :)
установка локали действует так, что флаг i работает теперь только для русских символов или для русских и английских одновременно (т.е. просто "подключаются" русские буквы)?

по идее вариант 2

установка локали определяет правила обработки символов с кодами >127
 
Работает :)
 
смотрите хекс коды русских символов и юзайте их
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху