Как сделать первую букву заглавной на PHP

  • 5 389
  • Комментарии: 2
Мачта

Сделать так, чтобы первая буква стала заглавной — довольно распространённая задача веб-разработчика. Это может потребоваться в самых разных случаях, но не будем заострять на них внимание, наша задач — поднять первую букву в любом слове с любой кодировкой.

Я не зря упомянул про кодировку, потому что в 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('дом'); // выведет "Дом"
Понравилась статья? Оцени её!
2 комментария
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *