Strtolower: примеры (PHP)
strtolower(string string): stringФункция strtolower преобразует все символы алфавита в переданной строке в нижний регистр. Эта функция часто применяется для нормализации строковых данных перед сравнением, сохранением в базу данных или обработкой, когда регистр символов не имеет значения.
Функция используется в случаях, когда требуется унифицировать строку без учета регистра букв. Например, при сравнении введенных пользователем данных, обработке названий файлов, создании URL-адресов или тегов.
Синтаксис функции прост: strtolower(string $string): string. Единственный параметр $string представляет собой входную строку, которую необходимо преобразовать. Функция возвращает новую строку, где все буквенные символы ASCII (A-Z) заменены на соответствующие строчные (a-z). Важно отметить, что функция не затрагивает неалфавитные символы и буквы, уже находящиеся в нижнем регистре.
Стоит обратить внимание, что strtolower работает только с символами кодировки ASCII. Для многобайтовых строк, таких как UTF-8, следует использовать функцию mb_strtolower.
<?
$str = "Hello World!";
echo strtolower($str);
?>hello world!
<?
$str = "PHP 8.1 & MySQL 8.0";
echo strtolower($str);
?>php 8.1 & mysql 8.0
<?
$str = "Привет Мир";
echo strtolower($str); // Не сработает для кириллицы
?>Привет Мир
<?
$input = "Admin";
if (strtolower($input) === "admin") {
echo "Доступ разрешен";
}
?>Доступ разрешен
В PHP существует несколько функций для работы с регистром символов, каждая из которых имеет свои особенности применения.
Функция mb_strtolower предназначена для многобайтовых строк (например, UTF-8). Она корректно обрабатывает символы различных алфавитов, включая кириллицу, греческий, арабский и другие. Использовать ее предпочтительнее strtolower при работе с текстом, содержащим не-ASCII символы.
Функция strtoupper выполняет обратное действие — преобразует все символы алфавита в верхний регистр. Как и strtolower, работает только с ASCII.
Многобайтовый аналог strtoupper для работы с различными кодировками.
Функция lcfirst преобразует первый символ строки в нижний регистр, а ucfirst — в верхний. Эти функции полезны для форматирования имен или предложений.
Функция ucwords преобразует в верхний регистр первый символ каждого слова в строке. Часто используется для форматирования заголовков.
Выбор функции зависит от конкретной задачи: strtolower подходит для простого приведения ASCII-строк к нижнему регистру, а mb_strtolower — для работы с текстом на разных языках.
Самая распространенная ошибка — попытка преобразовать строку, содержащую символы не из набора ASCII, например, кириллицу.
<?
$text = "ПРИВЕТ";
$result = strtolower($text);
echo $result; // Ожидается "привет", но будет "ПРИВЕТ"
?>ПРИВЕТ
Для решения этой проблемы необходимо использовать mb_strtolower с указанием кодировки.
Функция возвращает новую строку, не изменяя оригинальную переменную.
<?
$original = "Hello";
strtolower($original);
echo $original; // Выведет "Hello", а не "hello"
?>Hello
Для символов, зависящих от локали (например, буква I в турецком языке), strtolower может давать неожиданный результат. В таких случаях следует использовать mb_strtolower с указанием локали.
При сравнении строк после приведения к нижнему регистру часто забывают обрезать пробелы.
<?
$input = "ADMIN ";
if (strtolower($input) === "admin") {
echo "Совпадает"; // Этот код не выполнится
}
?>(ничего не выведет)
Функция strtolower является одной из старейших в PHP и остается стабильной на протяжении многих версий. Существенных изменений в ее поведении в последних версиях PHP не было.
Однако в PHP 8 было усилено строгое типизирование. Теперь при передаче нестроковых значений в strtolower будет генерироваться ошибка типа TypeError, в то время как в более ранних версиях PHP такие значения преобразовывались в строки.
<?
// В PHP 7.x
$result = strtolower(123); // Преобразуется в "123"
// В PHP 8.x
$result = strtolower(123); // TypeError
?>Также стоит отметить, что в PHP 8.1 появилась возможность передавать null в строковые функции, что вызывает уведомление об устаревании, а в будущих версиях будет вызывать ошибку.
Работа с кодировками по-прежнему остается важным аспектом. Разработчикам рекомендуется использовать mb_strtolower для многобайтовых строк, что особенно актуально в современных веб-приложениях, поддерживающих Unicode.
<?
// Приведение email к нижнему регистру перед сохранением
$email = "User@Example.COM";
$normalizedEmail = strtolower(trim($email));
echo $normalizedEmail; // "user@example.com"
?>user@example.com
<?
function generateSlug($title) {
$slug = strtolower($title);
$slug = preg_replace('/[^a-z0-9]+/', '-', $slug);
$slug = trim($slug, '-');
return $slug;
}
echo generateSlug("PHP 8 New Features!");
?>php-8-new-features
<?
// HTTP-заголовки нечувствительны к регистру, но для
// единообразия можно приводить их к нижнему регистру
$headers = ["Content-Type", "USER-AGENT", "Accept-Language"];
$normalizedHeaders = array_map('strtolower', $headers);
print_r($normalizedHeaders);
?>Array
(
[0] => content-type
[1] => user-agent
[2] => accept-language
)<?
$allowedExtensions = ['jpg', 'png', 'gif'];
$uploadedFile = 'IMAGE.JPG';
$extension = pathinfo($uploadedFile, PATHINFO_EXTENSION);
if (in_array(strtolower($extension), $allowedExtensions)) {
echo "Расширение файла допустимо";
}
?>Расширение файла допустимо
<?
$configKeys = [
'DB_HOST' => 'localhost',
'DB_USER' => 'root',
'db_pass' => 'secret' // Обратите внимание на регистр
];
// Приведение всех ключей к нижнему регистру для единообразия
$normalizedConfig = [];
foreach ($configKeys as $key => $value) {
$normalizedConfig[strtolower($key)] = $value;
}
print_r($normalizedConfig);
?>Array
(
[db_host] => localhost
[db_user] => root
[db_pass] => secret
)<?
$csvHeaders = ["ID", "Name", "Email", "Created_At"];
// Приведение заголовков к нижнему регистру
$normalizedHeaders = array_map('strtolower', $csvHeaders);
print_r($normalizedHeaders);
?>Array
(
[0] => id
[1] => name
[2] => email
[3] => created_at
)<?
$text = " PHP 8 is AWESOME!!! ";
$processed = strtolower(trim($text));
$processed = preg_replace('/[^a-z0-9\s]/', '', $processed);
$processed = preg_replace('/\s+/', ' ', $processed);
echo $processed;
?>php 8 is awesome
Strtolower в Python
В Python для преобразования строки в нижний регистр используется метод lower() строковых объектов. В отличие от PHP, он по умолчанию работает с Unicode.
text = "Hello World"
result = text.lower()
print(result)hello world
Strtolower в Javascript
В JavaScript применяется метод toLowerCase(). Он также работает с Unicode символами.
let text = "Hello World";
let result = text.toLowerCase();
console.log(result);hello world
Strtolower в MySQL
В SQL запросах MySQL используется функция LOWER() или LCASE(). Эти функции выполняют преобразование регистра для строк в результате запроса.
SELECT LOWER(username) FROM users;Strtolower в Java
В Java для строк используется метод toLowerCase(). Можно указать локаль для корректного преобразования.
String str = "Hello World";
String result = str.toLowerCase();В C# применяется метод ToLower() класса String. Также существует ToLowerInvariant() для независимого от культуры преобразования.
string str = "Hello World";
string result = str.ToLower();Основное отличие PHP функции strtolower от аналогов в других языках — ограниченная работа только с ASCII символами, в то время как аналоги в Python, JavaScript и других языках обычно поддерживают Unicode из коробки.