strtoupper()
Функция strtoupper() в PHP преобразует все строчные буквы строки в верхний регистр. Незаменима для нормализации и сравнений без учёта регистра.
Введение
strtoupper() преобразует все строчные буквы в строке в верхний регистр и возвращает результат. Исходная строка остаётся неизменной — как и все строковые функции PHP, strtoupper() возвращает новую строку, а не изменяет аргумент на месте.
Функция используется везде, где нужен вывод или сравнение без учёта регистра: нормализация кодов стран (us → US), преобразование заголовков к верхнему регистру или сравнение двух строк без привязки к регистру. На этой странице рассмотрены синтаксис, важная оговорка о многобайтовых строках и связанные функции.
Синтаксис
strtoupper(string $string): string| Часть | Описание |
|---|---|
$string | Входная строка. Обязательный параметр. |
| Возвращаемое значение | Копия $string, в которой каждая строчная ASCII-буква (a–z) заменена заглавной. Не-буквенные символы передаются без изменений. |
Простой пример
Цифры, пробелы и знаки пунктуации (!) передаются без изменений — в верхний регистр переводятся только буквы. Обратите внимание, что $string по-прежнему хранит "Hello World!"; преобразованный текст находится в $uppercase.
Сравнение без учёта регистра
Частый сценарий — сравнение пользовательского ввода без учёта того, в каком регистре он введён. Приведите обе стороны к верхнему регистру, а затем сравните:
<?php
$input = "Yes";
if (strtoupper($input) === "YES") {
echo "Confirmed";
} else {
echo "Not confirmed";
}
// ConfirmedИменно поэтому strtoupper() (и её парная функция strtolower()) так часто встречаются в коде обработки форм и маршрутизации.
Проблема с многобайтовыми строками
strtoupper() работает на уровне байт и не учитывает локаль для символов за пределами ASCII. Она умеет переводить в верхний регистр только a–z. Буквы с диакритикой и не-латинские символы остаются без изменений:
<?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() — она корректно преобразует буквы с диакритикой и не-латинские символы.