- Заметки Лёвика
- web программирование, администрирование и всякая всячина, которая может оказаться полезной
- PHP — функции регистра не работают strtolower, strtoupper, не работает uc_first
- Использование strtolower, не работает для кириллицы , примеры
- Все о функции strtolower
- Что такое strtolower
- Синтаксис функции strtolower
- Разбор синтаксиса функции strtolower
- Использование strtolower:
- Пример использования strtolower для латиницы:
- Использование strtolower для кириллицы:
- Почему не сработала функция strtolower
- Strtolower не работает для кириллицы
- Собственная функция Strtolower для кириллицы!
- Сделаем собственную функцию Strtolower для кириллицы!
- Результат работы собственной функции для кириллицы!
- Собственная функция Strtolower для кириллицы и латиницы!
- Результат работы собственной функции strollower
- Онлайн функция Strtolower для текста!
- Как работает онлайн Strtolower
- Сообщение системы комментирования :
- Strtolower не работает в PHP: причины, исправление
- mb_strtolower, strtolower, stripos и др. не работают с русскими символами
- 12 ответов
- Не работает функция strtolower
- Решение
Заметки Лёвика
web программирование, администрирование и всякая всячина, которая может оказаться полезной
PHP — функции регистра не работают strtolower, strtoupper, не работает uc_first
Функции strtolower, strtoupper, uc_first корректно преобразуют буквы английского алфавита, однако с русскими буквами не работают. Скорее всего, дело в кодировке.
1. если файлы в кодировке cp1251 пробуем установить соответствующую локаль:
setlocale(LC_ALL, ‘ru_RU.CP1251′);
Для файлов в кодировке UTF-8 следует использовать мультибайтовые функции mb_strtolower, mb_strtoupper… Однако, не каждый хостинг поддерживает mb-расширение.
$var = mb_strtolower($var,’UTF-8′) // не забываем указать кодировку в функции mb_strolower, mb_strtoupper
2. Если установка локали не помогла, можно написать собственную функцию:
function my_strtolower ($string) <
$str=strtolower($string);
if (strtolower (‘Ц’)!=’ц’) $string = strtr(
$string,
‘АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ’,
‘абвгдеёжзийклмнорпстуфхцчшщъьыэюя’);
return $string;
>;
По аналогии, если требуется, можно написать собственные функции вместо strtoupper и uc_first
ps. На мой взгляд, все-таки лучше разобраться с настройками хостинга..
Метки: php
Опубликовано Пятница, Июль 16, 2010 в 20:27 в следующих категориях: Без рубрики. Вы можете подписаться на комментарии к этому сообщению через RSS 2.0. Вы можете добавить комментарий, или trackback со своего сайта.
Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)
html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)
ссылка (для отправки по почте)
Источник
Использование strtolower, не работает для кириллицы , примеры
Сегодня разберем функцию strtolower, которая преобразует строку в нижний регистр. Т.е. все буквы делает строчными в php. Попробуем разобраться в ошибках связанных с функцией strtolower, примеры strtolower, напишем свою функцию для кириллицы преобразующие большие буквы в маленькие, но не только о strtolower, но и коснемся mb-strtolower.
Естественно нужно начать с определения даннйо функции:
Все о функции strtolower
Что такое strtolower
Синтаксис функции strtolower
Разбор синтаксиса функции strtolower
strtolower — название функции.
string — тип переменной, которую может обработать функция strtolower — строка
: string — тип возвращаемого значения строка
Использование strtolower:
Самое удобное, поместить в переменную текст, который пропускается через функцию и получается соответствующая строка.
Ну и далее оборачиваем переменную функцией strtolower:
И выводим результат с помощью echo
Пример использования strtolower для латиницы:
Для того, чтобы показать пример использования функции strtolower — нам понадобится текст на английском:
Далее применим к данной строке strtolower с использованием функции echo :
Результат применения strtolower к английскому тексту, который написан «ПРОПИСНЫМИ»
Как видим — наши «ПРОПИСНЫЕ» буквы на английском стали «строчными».
После этого можем переходить к кириллице!
Использование strtolower для кириллицы:
Опять поступаем со строкой, как в выше идущем пункте:
Расположим данный вывод прямо здесь и получим:
Мы видим, что ничего у нас не произошло…
Почему не сработала функция strtolower
Насколько я понимаю, что проблема в данном случае с кодировкой utf-8 для кириллицы! Дело в том, что кириллица в данной кодировке имеет не один символ а два. и strtolower просто не понимает, что от него хотят.
Чтобы показать в живую, чем отличается кириллица от латиницы:
Strtolower не работает для кириллицы
Если функция Strtolower не сработала для кириллицы — что делать!?
Вместо strtolower, можно использовать mb_strtolower — что означает mb
Но если например мы будем использовать данную функцию в таком виде:
То получим такой результат:
��� �������� �����, ������� ����� �������������� ��������� ���������� Чтобы mb_strtolower заработала с кириллицей UTF-8 ей нужно придать кодировку, таким образом:
Смотрим, что у нас в итоге получилось:
это тестовый текст, который будет иллюстрировать поведение стролловер
Собственная функция Strtolower для кириллицы!
Сталкивались с Strtolower для кириллицы!? Или может вы использовали mb-strtolower для кириллицы!? Эти функции работали и как впечатление!?
Когда в последний раз меня вывела из себя функция mb-strtolower – оказывается – эту хрень еще и подключать надо! Какая важная фифа, что она может даже быть и отключенная! Не то, что я не могу разобраться, как её включить – но просто это так достало, что просто нет тех слов цензурных слов, которые могли бы выразить все то, что я им хочу сказать!
Сделаем собственную функцию Strtolower для кириллицы!
Нам нужна такая функция Strtolower для кириллицы, чтобы она работала всегда и везде и чтобы больше никогда я не встречался с этой проблемой – мы просто напишем собственную функцию Strtolower для кириллицы!
Нам понадобится массив, который представляет из себя ключ – Большая кириллическая буква(верхний регистр = «ПРОПИСНЫЕ»), значение маленькая кириллическая буква(нижний регистр = «строчные»)
Еще нам понадобится функция strtr – которая преобразует найденные ключи в значения!
2). Поместим наш тестовый текст с прописными буквами в переменную
И обработаем дальше уже нашей функцией Strtolower для кириллицы
Результат работы собственной функции для кириллицы!
Собственная функция Strtolower для кириллицы и латиницы!
Пойдем дальше! Чем каждый раз вспоминать,какая функция работает там, работает сям! Сделаем функцию для кириллицы и латиницы, дарю:
Теперь давайте испытаем, сразу на двух текстах. что мы сделаем!?
Выведем наши текста таикм образом:
Результат работы собственной функции strollower
Онлайн функция Strtolower для текста!
Теперь на нашем сайте вы можете привести весь текст, который так или иначе написан с включением больших(прописных) букв, превратить в текст написанный строчными, т.е. маленькими!
Как работает онлайн Strtolower
В поле ввода пишем или вставляем текст ПРОПИСНЫМИ! И нажимаем отправить! И вы получите результат! Пока только Русский и английский языки!
Сообщение системы комментирования :
Форма пока доступна только админу. скоро все заработает. надеюсь.
Источник
Strtolower не работает в PHP: причины, исправление
Иногда при переходе на другой хостинг, или при установке новой версии PHP, перестает работать функция strtolower. Она начинает возвращать ту же строку, что и принимала, без приведения в нижний регистр. Это происходит из-за того, что неверно выставлена языковая локаль, и PHP не понимает, каким символам нижнего регистра должны соответствовать вводимые символы верхнего регистра. Проблема решается следующим образом.
Надо установить локаль. В windows это делается установкой переменной окружения LC_ALL в соответствующее значение (какое именно – описано ниже). Однако, если нет такой возможности, можно вызывать где-нибудь в главном или конфигурационном скрипте функцию установки локали в PHP setlocale (https://www.php.net/manual/en/function.setlocale.php). В руководстве PHP описано, какие значения и для каких целей можно устанавливать. Например,
Однако, мало установить значение. Нужно еще и проверить, что установилось:
так как функция setlocale возвращает false если не удалось установить локаль или имя локали, если удалось установить, это позволит убедиться в правильности выбранной настройки.
В вышеупомянутом разделе руководства PHP есть небольшая сноска для пользователей windows: http://msdn.microsoft.com/en-us/library/39cwe7zf(vs.71).aspx
из этого следует, что в windows правильным обозначением русской языковой локали является строка «rus». Таким образом, нужно использовать следующий простой вызов:
либо, как вариант:
Очевидно, данное решение применимо также если не работает функция strtoupper.
Невозможно обойти в стороне то бурление говн, которое происходит в интернете по поводу неработающей функции strtolower. Ниже приводятся примеры, которые ни в коем случае не следует использовать в качестве решения данной проблемы.
Редкостные извращенцы советуют использовать mb_strtolower (http://www.php.net/manual/en/function.mb-strtolower.php) вместо обычного strtolower, что в общем-то работать будет, но вам придется переписывать весь код. Кроме того, функция mb_strtolower более требовательна к ресурсам, поэтому не удивляйтесь, если ваш код начнет сильно тормозить. Для данного говно-метода расширение Multibyte String должно быть установлено, что также не на всех хостингах возможно. Используйте Multibyte String только по его прямому назначению, никогда не забивайте гвозди микроскопом.
Ну и напоследок, наиболее фееричный и ужасный способ перевода из верхнего регистра в нижний, который часто встречается в интернете:
Народ тупо и банально советует простым перебором, забив русский алфавит, заменять букву верхнего регистра на аналог в нижнем регистре. Это невообразимый пример говнокода, так никогда не надо делать.
Источник
mb_strtolower, strtolower, stripos и др. не работают с русскими символами
приведёт к выводу числа 7, что абсолютно не соответствует действительности. И я подозреваю, что это из-за этой вот петрушки с кодировками. Потому что если я перехожу на английский регистр, то всё становится нормально. И перевод к нижнему регистру строку не меняет и номера позиций правильно выдаются.
Тестирую на Denver, PHP Version 5.2.12. В настройках сервера стоит:
12 ответов
вероятно потому, что надо явно задать кодировку. И сервер должен отдавать контент в UTF-8.
Пользуюсь случаем и хочу спросить Вас
Если я создаю html-документ
прописываю в нём charset= UTF-8
запускаю файл в браузере и вижу типа такова ��� �����
Теперь сам html-файл сохраняю КАК UTF-8, теперь всё в порядке.
Сам вопрос
Но почему-то некоторые html-файлы сохранены Как ASCII и в html-документе указан charset= utf-8 тоже работают нормально.
Не могу, понять из-за чего это происходит?
Думаю это связанно с шрифтами или редактором.
Это не то там не идет речи об самом файле как он сохранен на диске.
Небось, английские символы выводятся нормально, а русские нет?
))))) Браво, Кэп!
Вроде сегодня не 1 апреля.
Это может происходить например если кодовая страница установленная в браузере клиента совпадает с кодировкой файла. В таком случае браузер клиента игнорирует установленный charset — он выводит страницу в той кодировке, в которой ему приказали.
Я правильно понял кодировка файла — это ASCII или UTF-8 в плане как он сохранен на диске.
А вот тут Вы меня озадачили игнорирует установленный charset, если charset прописан, то браузер ну никак не может его игнорировать. Другое дело если charset не прописан, вот тогда браузер пытается подставить кодировку страницы. Честно сказать браузеру по барабану как сохранены файлы на диске в ASCII или UTF-8 т.к разметка документа сохраняется, что в ASCII или UTF-8 . Это должен делать программист как сохранять файл. Или что я не понял.
P.S
Это по HTML-документу. Если charset= utf-8 тогда сохранить файл Как UTF-8. И не ломать голову.
По поводу моего вопроса так оказалось все просто. Т.е наличие или отсутствия Unicode в тексте.
И ещё в макете есть шрифты, которые просто не поддерживают Русский.
Автор изначально приводит настойки своего апача:
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
При этом есть ещё некая БД, у которой тоже есть кодировки.
В данном случае хотелось бы посоветовать лишь привести кодировку БД к нужному. Например при помощи SET NAMES utf8 при каждом подключении к БД.
Источник
Не работает функция strtolower
Функция-то вроде простая, я явно что-то неправильно делаю, но где?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Не работает функция strtolower и strupper с кирилицей. С английскими все нормально.
1. Отправляю функцией mail информацию для пользователся. На адреса @mail, @rambler, @list .
Почему функция strtolower не работает в кодировке utf-8 для русских символов
Помогите, пожалуйста. Почему функция strtolower не работает в кодировке utf-8 для русских.
функция strtolower для Логина
Введите пожалуйста функцию strtolower для логина 3
Решение
Не работает strtolower с кирилицой
Не работает функция strtolower с кирилицой. Гуглинг проблемы подсказал установить setlocale, но не.
Strtolower не срабатывает
Есть задача взять файл «robots.txt» с указанного пользователем адреса, и найти в нём кол-во.
Функции strupper(); strtolower();
Добрый вечер, не работают функции strtolower, strtoupper и ucfirst . Не форматируют текст никак.
strtolower для русского языка
strtolower превращяет все в маленькие буквы если английские символы а вот русские символы.
Strtolower(String) возвращает пустую строку
Всех с наступающим новым годом! Ребята возник вопрос, может кто-то сталкивался. Есть строка.
Функция корректно работает в Delphi 7 и не неверно работает в RAD Studio 10
Переписываю свою программу с Delphi 7 под RAD Studio 10. Столкнулся с проблемой — функция в.
Источник