ucfirst()
Функция ucfirst() в PHP преобразует первый символ строки в верхний регистр. В этой статье подробно рассматривается ucfirst() и её применение
ucfirst() возвращает копию строки, в которой первый символ преобразован в верхний регистр. Все остальные символы остаются без изменений. Это функция, к которой обращаются, когда нужно сделать заглавной букву имени, первое слово предложения или метку, не затрагивая остальной текст.
На этой странице рассматриваются синтаксис, возвращаемое значение, краевые случаи, которые часто удивляют (числа, уже заглавные строки, многобайтовый текст), а также отличие ucfirst() от связанных функций изменения регистра.
Синтаксис
ucfirst(string $string): string| Параметр | Описание |
|---|---|
$string | Входная строка. |
Возвращаемое значение: новая строка с первым символом в верхнем регистре. ucfirst() не изменяет $string на месте — она возвращает результат, поэтому его нужно сохранить или вывести. Если первый символ не является строчной буквой (это цифра, символ или уже заглавная буква), строка возвращается без изменений.
Базовый пример
Только первая буква h становится H. Запятая, остальные слова и восклицательный знак остаются нетронутыми — ucfirst() никогда не переводит символы в нижний регистр и не изменяет ничего после первого символа.
Что ucfirst() не делает
Распространённая ошибка — ожидать, что ucfirst() приведёт в порядок всю строку. Это не так:
<?php
echo ucfirst("HELLO") . "\n"; // HELLO (first char already uppercase → no change)
echo ucfirst("hELLO") . "\n"; // HELLO (only the first char is touched, not the rest)
echo ucfirst("123abc") . "\n"; // 123abc (first char is a digit → nothing to capitalize)Если нужно получить аккуратное Слово с заглавной буквы из «грязных» входных данных, сначала приведите строку к нижнему регистру, а затем сделайте первый символ заглавным:
<?php
$messy = "hELLO";
echo ucfirst(strtolower($messy)); // HelloКапитализация каждого слова
ucfirst() влияет только на самый первый символ всей строки. Чтобы сделать заглавной первую букву каждого слова, используйте ucwords():
<?php
$title = "the quick brown fox";
echo ucfirst($title) . "\n"; // The quick brown fox
echo ucwords($title) . "\n"; // The Quick Brown FoxМногобайтовый / не-ASCII текст
ucfirst() работает побайтово и понимает только буквы ASCII (a–z). Она не сможет корректно перевести в верхний регистр первые буквы с диакритическими знаками или из не-латинских алфавитов, например é, ñ или символы кириллицы. Для таких случаев требуется многобайтовое расширение строк — функции mb_ucfirst() не существует, поэтому распространённый подход выглядит так:
<?php
function mb_ucfirst(string $string, string $encoding = "UTF-8"): string
{
$first = mb_strtoupper(mb_substr($string, 0, 1, $encoding), $encoding);
return $first . mb_substr($string, 1, null, $encoding);
}
echo mb_ucfirst("élise"); // ÉliseКогда использовать
- Форматирование пользовательского ввода — отображать
"john", введённое в форму, как"John". - Оформление предложений — делать заглавным первое слово генерируемого сообщения или метки.
- Создание читаемых идентификаторов — превращать сегмент slug в заголовок.
Для обратной операции (перевод первого символа в нижний регистр) смотрите lcfirst(). Для изменения регистра всей строки смотрите strtoupper() и strtolower().
Резюме
ucfirst() переводит в верхний регистр только первый символ строки и возвращает результат, не изменяя оригинал. Функция игнорирует не-буквы и уже заглавные символы, не затрагивает остальную часть строки и работает только с ASCII — комбинируйте её с strtolower() для нормализации «грязного» ввода, с ucwords() для капитализации каждого слова, или с многобайтовыми функциями выше для текста с диакритическими знаками.