
Народ тупо и банально советует простым перебором, забив русский алфавит, заменять букву верхнего регистра на аналог в нижнем регистре. Это невообразимый пример говнокода, так никогда не надо делать.
$string = strtr( $string, 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ', 'йцукенгшщзхъфывапролджэячсмитьбюё' );
Ну и напоследок, наиболее фееричный и ужасный способ перевода из верхнего регистра в нижний, который часто встречается в интернете:
Редкостные извращенцы советуют использовать mb_strtolower ( ) вместо обычного strtolower, что в общем-то работать будет, но вам придется переписывать весь код. Кроме того, функция mb_strtolower более требовательна к ресурсам, поэтому не удивляйтесь, если ваш код начнет сильно тормозить. Для данного говно-метода расширение Multibyte String должно быть установлено, что также не на всех хостингах возможно. Используйте Multibyte String только по его прямому назначению, никогда не забивайте гвозди микроскопом.
Невозможно обойти в стороне то бурление говн, которое происходит в интернете по поводу неработающей функции strtolower. Ниже приводятся примеры, которые ни в коем случае не следует использовать в качестве решения данной проблемы.
Очевидно, данное решение применимо также если не работает функция strtoupper.
setlocale(LC_ALL, "Russian_Russia.1251");
либо, как вариант:
из этого следует, что в windows правильным обозначением русской языковой локали является строка «rus». Таким образом, нужно использовать следующий простой вызов:
В вышеупомянутом разделе руководства PHP есть небольшая сноска для пользователей windows:
так как функция setlocale возвращает false если не удалось установить локаль или имя локали, если удалось установить, это позволит убедиться в правильности выбранной настройки.
var_dump(setlocale(LC_ALL, "ru_RU.CP1251"));
Однако, мало установить значение. Нужно еще и проверить, что установилось:
setlocale(LC_ALL, "ru_RU.CP1251");
Надо установить локаль. В windows это делается установкой переменной окружения LC_ALL в соответствующее значение (какое именно – описано ниже). Однако, если нет такой возможности, можно вызывать где-нибудь в главном или конфигурационном скрипте функцию установки локали в PHP setlocale ( ). В руководстве PHP описано, какие значения и для каких целей можно устанавливать. Например,
Иногда при переходе на другой хостинг, или при установке новой версии PHP, перестает работать функция strtolower. Она начинает возвращать ту же строку, что и принимала, без приведения в нижний регистр. Это происходит из-за того, что неверно выставлена языковая локаль, и PHP не понимает, каким символам нижнего регистра должны соответствовать вводимые символы верхнего регистра. Проблема решается следующим образом.
понедельник, 21 ноября 2011 г.
strtolower не работает в PHP
Комментариев нет:
Отправить комментарий