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

Тема в разделе "Регулярные выражения", создана пользователем studentpm, 8 май 2008.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. studentpm

    studentpm

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

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

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

        print 
    $str;

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

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    setlocale(LC_ALL,'ru_RU.CP1251');

    ?
     
  3. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
    Не, так тоже не пашет =(
     
  4. Dimkich

    Dimkich Постоялец

    Регистр.:
    10 июл 2007
    Сообщения:
    119
    Симпатии:
    36
    тогда такой вариант:)
    PHP:
         $str preg_replace("/([лЛ][оО][рР][еЕ][мМ]|[lL][oO][rR][eE][mM])/i"'<b>$1</b>'$str);
     
  5. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    посмотри какие русские локали установлены

    locale -a | grep ru
     
  6. ozware

    ozware

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

    по идее вариант 2
     
  7. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    установка локали определяет правила обработки символов с кодами >127
     
  8. Lozzie

    Lozzie Постоялец

    Регистр.:
    10 апр 2006
    Сообщения:
    92
    Симпатии:
    26
    а если так?...
     
  9. Lozzie

    Lozzie Постоялец

    Регистр.:
    10 апр 2006
    Сообщения:
    92
    Симпатии:
    26
    Работает :)
     
  10. Piflit

    Piflit Создатель

    Регистр.:
    7 июн 2008
    Сообщения:
    24
    Симпатии:
    4
    смотрите хекс коды русских символов и юзайте их
     
Статус темы:
Закрыта.