![]() |
проблема - Regular Expression и русская буква "ч"
имеется текстовой файл(на русском) и такой вот код
PHP код:
затем надо $contents разбить на массив где каждый элемент массива это одно слово ну напрмер файл 3.txt содержит одну строку "Вечно молодой вечно пьяный" после выполнения скрипта получаем такой вот массив $word Array ( [0] => Array ( [0] => Вечно [1] => молодой [2] => вечно [3] => пьяный ) ) но вот что странное я заметил - если слово начиняется с буквы "ч" то она просто пропадает ну напрмер если файл 3.txt содержит одну строку "зачем через голову прыгать" после выполнения скрипта получаем такой вот массив $word Array ( [0] => Array ( [0] => зачем [1] => ерез [2] => голову [3] => прыгать ) ) т.е. слово "через" превратилось "ерез" и так со всеми словами которые начинаются на букву "ч" я не понимаю что происходит в чем проблема?? |
Скорей всего локаль кривая. Юзай setlocale.
|
PHP какой версии ... обнови, в последних версиях этот глюк исправили ...
|
RaZEr
например в php-help есть пример /* Set locale to Dutch */ setlocale (LC_ALL, 'nl_NL'); что-бы сделать set locale to Russian вместо 'nl_NL' нужно поставить 'ru_RU' или как? можно чуть-чуть по подробней? BiГ версия 4.3.2 Добавлено через 6 минут: RaZEr проверил если ставить ru_RU ничего не меняется |
ru_RU.CP1251
|
RaZEr
поставил setlocale (LC_ALL, 'ru'); в это примере заработалаааа ставлю в реальный скрипт в первую строку не работает никаких изменений этот preg_match_all находится где-то в середине скрипта ставлю setlocale прямо перед preg_match_all - РАБОТАЕТ это тоже странно выходит так что некоторые функции которые вроде как не дожны менять locale меняют его но это вроде как уже другая проблема а мой скрипт заработал Спасибо RaZEr выручил Добавлено через 10 минут: RaZEr нет неработает ru_RU.CP1251 |
Значит не стоит. Узнай какая стоит, если не стоит никакая, нужно поставить.
|
RaZEr
HTTP_ACCEPT_LANGUAGE - en-us. ты про это или нет но ведь всетаки если ставишь setlocale (LC_ALL, 'ru'); в скрипте то работает зашел в Regional and language Options поменял Regional Options на Russian соответственно сейчас HTTP_ACCEPT_LANGUAGE - ru но все равно ru_RU.CP1251 не работает и если вообще без setlocale буква "ч" все равно пропадает хотя HTTP_ACCEPT_LANGUAGE - ru |
Формат locale:
Код:
lang[_country_region[.code_page]]Код:
setlocale(LC_ALL,"ru");Код:
setlocale(LC_ALL,"rus"); |
интерсно было, посмотрел в реестре
есть windows-1251 ну что мне с этого я проверил у меня WindowXP,PHP 4.3.2, IIS вот setlocale(LC_ALL,"ru") или setlocale(LC_ALL,"rus") работает а вот на хосте RedHat, PHP 4.2.2 работает setlocale(LC_ALL,"ru_RU") вот так |
| Часовой пояс GMT +4, время: 11:54. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.