Сегодня, когда писал очередной скрипт, столкнулся с задачей преобразования первого символа строки в верхний регистр. Для этого в PHP есть стандартная функция ucfirst, но она не корректно работает для кириллицы в кодировке utf-8.
К сожалению, у функции ucfirst нет мультибайтного варианта в модуле расширения mbstring, который содержит полезные аналоги распространенный функций по работе со строками, с которыми можете познакомиться по этой ссылке. Иначе можно было написать нечто вроде mb_ucfirst($str, ‘utf-8) и получить желаемый результат.
Поискав в Google я нашел отличный выход. И чтобы не забыть его решил записать в свой блог «шпаргалку» и заодно поделиться с другими вебмастерами, которые, возможно, тоже могут столкнуться с этой проблемой.
<?php // Функция для всех кодировок if(!function_exists('mb_ucfirst')) { function mb_ucfirst($str, $encoding = NULL) { if($encoding === NULL) { $encoding = mb_internal_encoding(); } return mb_substr(mb_strtoupper($str, $encoding), 0, 1, $encoding) . mb_substr($str, 1, mb_strlen($str)-1, $encoding); } } // функция для utf-8, более лаконичный вариант предыдущей функции function ucfirst_utf8($str) { return mb_substr(mb_strtoupper($str, 'utf-8'), 0, 1, 'utf-8') . mb_substr($str, 1, mb_strlen($str)-1, 'utf-8'); } ?> |
Как видите все просто. Теперь в коде можно будет просто прописать ucfirst_utf8 и кириллица в кодировке UTF-8 будет менять первый символ на верхний регистр.
Если у Вас свои хорошие решения этого вопроса — пишите в комментарии.
На правах рекламы:
Юридическая компания Право уже помогла многие с ликвидацией ИП, фирмы и других видов организаций. Такая операция требует хороших знаний и квалицированных юристов. Если Вы нуждаетесь в услуге «ликвидация фирм с долгами» то рекомендуем Вам именно эту компанию — они помогут!
3 в ответ на ucfirst_utf8 или функция ucfirst для кодировки utf-8: