|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Constantin Stefanov 2:5020/400 10 Feb 2004 19:37:55 To : Max Khon Subject : Re: Объясните мне, что за фигня творится в во фре с локалью. -------------------------------------------------------------------------------- Max Khon wrote: > AV> Да, для локального пользователя я тоже все настроил и все получилось. > AV> Hадо или присвоить пользователю класс 'russian', или установить > AV> несколько переменных окружения - просто я этого не знал. А с PHP все > AV> осталось попрежнему. Hеужели он некорректно отрабатывает локаль? > AV> Думается мне, что проблема должна решаться достаточно просто - ведь не > AV> я же первый столкнулся с этим. > > немного не понял. php у тебя в какой локали работает? Гм, все там как-то не так. Берем скрипт. ---------------------------------------- <html> <body> <?php setlocale(LC_ALL, "ru_RU.KOI8-R"); if(ereg("[а-я]", "ъ")) {echo "Yes";} else {echo "No";} echo " "; echo strcoll("я","ъ"); echo " "; echo strcoll("а","ъ"); ?> </body> </html> ---------------------------------------- Вывод - No 5 -27. Т.е. ereg говорит, что "ъ" не в интервале а-я, а strcoll утверждает, что в интервале. Если же закомментировать строчку с setlocale, то вывод такой: No -14 -30. Т.е. как-то получается, что на strcoll setlocale влияет, а на ereg - нет. При этом egrep из командной строки все отрабатывает как надо, и sort командно-строчный тоже все сортирует правильно. То есть где-то в этом php недокручена работа с локалью в регулярных выражениях. Посему два вопроса: 1. Это FreeBSD-specific или в других ОС тоже так? 2. Как лечить? -- Константин Стефанов --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577539a1d61.html, оценка из 5, голосов 10
|