| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > strtolower русский текст |
| Автор: mistero 23.7.2007, 19:19 |
| Здравствуйте. Применяю функцию strtolower(), но на кириллицу не влияет. Что делать? |
| Автор: belousov 23.7.2007, 19:26 |
| mistero, А в настройках php кодировку смотрел? она влияет на кодировку однозначно |
| Автор: FlameTH 23.7.2007, 19:33 |
| Это ошибки в компиляции пхп. Просто смените версию на более новую. У меня возникали проблемы в этом и никакие настройки не помогали. |
| Автор: belousov 23.7.2007, 19:35 |
| Да кстати правильная мысль, какая версия php у тя? |
| Автор: Mal Hack 23.7.2007, 19:37 |
| FlameTH, теперь что, вместо любого Parse Error будем более новую версию ставить? И компиляция тут не причем, как и настройка... Вот кодировка сервера - да, влияет, а кодировка, прописанная в php.ini, как показывает практика - редко. mistero, в принципе, тут уже неоднократно обсуждалось. setlocale() надо прописать. |
| Автор: mistero 23.7.2007, 19:38 | ||
php 4.4.4 |
| Автор: FlameTH 23.7.2007, 19:42 |
| Mal Hack, поверь. Это я уже пробовал и локалями. Я держу собственный сервак с кодировками все норм. И только когда я сменил пхп все нормально запахало. Вот так. |
| Автор: mistero 23.7.2007, 19:44 | ||
Извиняюсь за ламерство, но можно ли как-нить на сервере врубить поддержку пхп 5? Локали у меня тоже не пашут. |
| Автор: FlameTH 23.7.2007, 19:45 |
| Обновите пхп до версии 5+ |
| Автор: Mal Hack 23.7.2007, 20:28 |
| Не верю. Либо предоставьте доказательства бага на вашей предыдущей версии, который обязательно висит на багтрекере php.net, т.к. такая проблема наверняка бы подняла многих бы людей... 4 ветку я всюиспользовал. И все было нормально. Другой вопрос, что система не знала кирилической кодировки. Тут уж ничего не поможет. |
| Автор: smartov 23.7.2007, 21:39 |
| mistero, зависит от Вашей локальной кодировки. Если кодировка не Unicode (UTF-8), то нужно установить локаль, как Вам и подсказывают, если же unicode, то можно поставить (или не ставить если уже есть) и использовать расширение multibyte strings. http://php.net/mb_strtolower |
| Автор: SelenIT 23.7.2007, 22:20 |
| На самый крайний случай можно сделать свою замену strtolower - через strtr. Как это ни смешно, но это, наверное, самый надежный вариант для идеальной переносимости... |
| Автор: Mal Hack 24.7.2007, 13:43 |
| smartov, я несколько поясню, правда, не для тебя, ты-то это хорошо понимаешь, просто по лексической нагрузке разы тебя могут несколько не правильно понять. multibyte strings надо использовать, когда вы работаете со строками, которые 100% находятся в кодировке utf, к примеру данные с формы на сайте, где utf прописанат через <meta>. |
| Автор: Fally 25.7.2007, 14:38 |
| http://php.net/setlocale? |
| Автор: bizmik 4.12.2007, 04:30 | ||||
разбирался с setlocale и нифига не работало. Потом плюнул и за 2 минуты написал простую функцию
Ну и пользуюсь так $art = strtolower(lower($art)); , все прекрасно переводи и кирилицу и латиницу и наплевать на какие-то там локали. Юзайте. |
| Автор: Sannis 4.12.2007, 10:39 |
| Ну, для символа-то прокатит, а если в $art строка? |
| Автор: Anarki 4.12.2007, 11:57 | ||||
|
| Автор: smartov 4.12.2007, 18:35 |
| bizmik, Anarki, фи, это ж костыли |
| Автор: Anarki 5.12.2007, 12:57 | ||
Они сами просили... |
| Автор: capitan 13.12.2007, 16:22 | ||
Нужно просто читать ман до конца. Там есть пример:
|
| Автор: pkhits 2.7.2008, 09:45 |
| и ведь чего только не понаписали... и компиляция и версия не та... "форум программистов".. вместо решения проблемы функцию написали... не пудрите людям мозги! где-нить в начале своего файла пропишите: setlocale(LC_ALL, 'ru_RU.CP1251'); и всё будет нормально! |
| Автор: skyboy 2.7.2008, 10:19 | ||
та ну на. ещё скажи, что тут про setlocale не говорили |
| Автор: slaw 2.7.2008, 10:38 | ||
единственно верное решение (!) |
| Автор: smartov 2.7.2008, 13:35 |
| pkhits, о великий! Спасибо что просветил нас тёмных! |
| Автор: OrkZ 20.10.2008, 04:42 |
| setlocale (LC_CTYPE, array ('ru_RU.CP1251', 'rus_RUS.1251')); однозначно поможет ! (кодировку можно ставить по выбору) |
| Автор: vpokorp 5.12.2008, 20:57 | ||
| чето не то setlocale (LC_CTYPE, 'ru_RU'); получилось вот что:
setlocale (LC_CTYPE, array ('ru_RU.CP1251', 'rus_RUS.1251')); вообще ничего не поменяло ps версия 5,2,6 |
| Автор: smartov 6.12.2008, 13:14 | ||
vpokorp,
|