W3docs

ucfirst()

Функция ucfirst() в PHP преобразует первый символ строки в верхний регистр. В этой статье подробно рассматривается ucfirst() и её применение

ucfirst() возвращает копию строки, в которой первый символ преобразован в верхний регистр. Все остальные символы остаются без изменений. Это функция, к которой обращаются, когда нужно сделать заглавной букву имени, первое слово предложения или метку, не затрагивая остальной текст.

На этой странице рассматриваются синтаксис, возвращаемое значение, краевые случаи, которые часто удивляют (числа, уже заглавные строки, многобайтовый текст), а также отличие ucfirst() от связанных функций изменения регистра.

Синтаксис

ucfirst(string $string): string
ПараметрОписание
$stringВходная строка.

Возвращаемое значение: новая строка с первым символом в верхнем регистре. ucfirst() не изменяет $string на месте — она возвращает результат, поэтому его нужно сохранить или вывести. Если первый символ не является строчной буквой (это цифра, символ или уже заглавная буква), строка возвращается без изменений.

Базовый пример

php— editable, runs on the server

Только первая буква 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 (az). Она не сможет корректно перевести в верхний регистр первые буквы с диакритическими знаками или из не-латинских алфавитов, например é, ñ или символы кириллицы. Для таких случаев требуется многобайтовое расширение строк — функции 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() для капитализации каждого слова, или с многобайтовыми функциями выше для текста с диакритическими знаками.

Практика

Практика
Что делает функция PHP ucfirst()?
Что делает функция PHP ucfirst()?
Was this page helpful?