Страницы

Поиск по вопросам

среда, 17 октября 2018 г.

Почему “ucfirst()” не работает для русских символов?

Здравствуйте! У меня часто возникают проблемы с кодировками, в частности с отображением русских символов во всех более-менее современных браузерах. Вот еще один вопрос возник: Почему PHP-функция "ucfirst()" не работает для русских символов? Как можно "заставить" её работать? Или есть хотя бы альтернатива? P.S Только банальщину с заменой букв по массиву предлагать не стоит. Спасибо всем, кто откликнулся!


Ответ

UTF-8, разумеется? PHP не может нормально работать с многобайтными кодировками. Наиболее близкое решение: mb_internal_encoding("UTF-8"); function mb_ucfirst($text) { return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1); } echo mb_ucfirst("тест
"); На всякий случай, дополню: если вы до сих пор кипятите^W используете CP1251 или, упаси Его Макароннейшество, KOI8-R, то может помочь вызов setlocale, с однобайтными кодировками ucfirst кое-как работает: setlocale(LC_CTYPE, "ru_RU.CP1251"); echo ucfirst("\xf2\xe5\xf1\xf2
"); Но работать это будет только в случае, если в системе есть такая локаль. Т.е. как повезет.

Комментариев нет:

Отправить комментарий