W3docs

strtoupper()

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

Введение

strtoupper() преобразует все строчные буквы в строке в верхний регистр и возвращает результат. Исходная строка остаётся неизменной — как и все строковые функции PHP, strtoupper() возвращает новую строку, а не изменяет аргумент на месте.

Функция используется везде, где нужен вывод или сравнение без учёта регистра: нормализация кодов стран (usUS), преобразование заголовков к верхнему регистру или сравнение двух строк без привязки к регистру. На этой странице рассмотрены синтаксис, важная оговорка о многобайтовых строках и связанные функции.

Синтаксис

strtoupper(string $string): string
ЧастьОписание
$stringВходная строка. Обязательный параметр.
Возвращаемое значениеКопия $string, в которой каждая строчная ASCII-буква (az) заменена заглавной. Не-буквенные символы передаются без изменений.

Простой пример

php— editable, runs on the server

Цифры, пробелы и знаки пунктуации (!) передаются без изменений — в верхний регистр переводятся только буквы. Обратите внимание, что $string по-прежнему хранит "Hello World!"; преобразованный текст находится в $uppercase.

Сравнение без учёта регистра

Частый сценарий — сравнение пользовательского ввода без учёта того, в каком регистре он введён. Приведите обе стороны к верхнему регистру, а затем сравните:

<?php

$input = "Yes";

if (strtoupper($input) === "YES") {
    echo "Confirmed";
} else {
    echo "Not confirmed";
}
// Confirmed

Именно поэтому strtoupper() (и её парная функция strtolower()) так часто встречаются в коде обработки форм и маршрутизации.

Проблема с многобайтовыми строками

strtoupper() работает на уровне байт и не учитывает локаль для символов за пределами ASCII. Она умеет переводить в верхний регистр только az. Буквы с диакритикой и не-латинские символы остаются без изменений:

<?php

echo strtoupper("café"); // CAFé  — the é is not converted

Для работы с Unicode-текстом (UTF-8 строки с ударениями, ñ, кириллица, греческий алфавит и т. д.) используйте mb_strtoupper(), которая учитывает кодировку символов:

<?php

echo mb_strtoupper("café", "UTF-8"); // CAFÉ

Простое правило: данные только из ASCII (коды, slug-идентификаторы, метки на английском языке) → strtoupper(). Всё, что может содержать международные символы, → mb_strtoupper().

Связанные функции

  • strtolower() — обратная функция: переводит заглавные буквы в строчные.
  • ucfirst() — переводит в верхний регистр только первый символ строки.
  • ucwords() — переводит в верхний регистр первый символ каждого слова.

Итог

strtoupper() возвращает новую полностью заглавную копию ASCII-строки и удобна для нормализации данных и сравнений без учёта регистра. Для текста, который может содержать не-ASCII символы, предпочтительнее mb_strtoupper() — она корректно преобразует буквы с диакритикой и не-латинские символы.

Практика

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