Сделать так, чтобы первая буква стала заглавной — довольно распространённая задача веб-разработчика. Это может потребоваться в самых разных случаях, но не будем заострять на них внимание, наша задач — поднять первую букву в любом слове с любой кодировкой.
Я не зря упомянул про кодировку, потому что в PHP есть встроенная функция, чтобы сделать первую букву заглавной, это ucfirst(). Но она нам не подходит, т.к. работает только с латинскими символами. Т.е. если вы с помощью такой функции попробуете поднять первую букву в слове «home», то всё будет в порядке и на выходе вы получите «Home». А если сделать то же самое со словом «дом», то на выходе как был «дом» с маленькой буквой, так и останется. Это происходит потому, что мы используем русские символы в кодировке UTF-8, т.е. многобайтовой, а ucfirst() используется для однобайтовых кодировок.
В PHP есть функции для работы со строками в многобайтовых кодировках, их то мы и используем в функции, представленной ниже, чтобы сделать первую букву заглавной в многобайтовой кодировке.
Функция, которая делает первую букву заглавной
/** * Uppercase first letter. Working with multi-byte encodings. * * @param $str * @param string $encoding * @return string */ function upFirstLetter($str, $encoding = 'UTF-8') { return mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding) . mb_substr($str, 1, null, $encoding); } echo upFirstLetter('дом'); // выведет "Дом"
Спасибо за хороший и рабочий код) Жму руку, выручил.
Пожалуйста!