Mb strtolower: примеры (PHP)
mb_strtolower(string $string, ?string $encoding = null): stringФункция mb_strtolower в PHP
Функция mb_strtolower преобразует строку в нижний регистр с учётом установленной кодировки символов. Она является частью модуля Multibyte String (mbstring) и предназначена для корректной обработки многобайтовых кодировок, таких как UTF-8.
Функция применяется при работе с текстами на языках, использующих нелатинские алфавиты (например, русский, греческий, арабский), где простой strtolower может привести к некорректному результату или повреждению символов.
- string (обязательный) – исходная строка для преобразования.
- encoding (необязательный) – кодировка входной и выходной строки. Если не указана, используется внутренняя кодировка, определённая
mb_internal_encoding().
Примеры использования mb_strtolower
Простое преобразование строки с русскими символами.
echo mb_strtolower('Привет, МИР!');привет, мир!
Явное задание кодировки UTF-8.
echo mb_strtolower('ΓΕΙΑ ΣΟΥ ΚΟΣΜΕ', 'UTF-8');γεια σου κοσμε
Преобразование с автоматическим определением кодировки.
mb_internal_encoding('UTF-8');
echo mb_strtolower('ЭТО Тест');это тест
Похожие функции в PHP
Стандартная функция для преобразования регистра, но она не поддерживает многобайтовые кодировки. Используется только для однобайтовых кодировок (например, ASCII, ISO-8859-1).
Функция для преобразования строки в верхний регистр с поддержкой многобайтовых кодировок. Применяется в аналогичных случаях, но для обратного преобразования.
Более универсальная функция, которая может преобразовывать строку в нижний, верхний регистр или регистр заголовка. Полезна для сложных преобразований.
Типичные ошибки
Применение функции к строке в однобайтовой кодировке без необходимости может немного замедлить выполнение, но не вызовет ошибки.
Указание неверной кодировки может привести к некорректному результату или предупреждению.
echo mb_strtolower('Тест', 'ISO-8859-1');��� (при условии, что исходная строка в UTF-8)
Попытка использовать функцию без подключенного модуля mbstring вызовет фатальную ошибку.
// Если модуль mbstring не установлен
echo mb_strtolower('test');Fatal error: Uncaught Error: Call to undefined function mb_strtolower()
Изменения в последних версиях PHP
В PHP 8.0 параметр encoding стал необязательным и по умолчанию используется значение, возвращаемое mb_internal_encoding(). В более ранних версиях PHP параметр был обязательным, и его отсутствие вызывало предупреждение.
Расширенные примеры
Функция может применяться к элементам массива с помощью array_map.
$array = ['ЯБЛОКО', 'Груша', 'БАНАН'];
$lower = array_map('mb_strtolower', $array);
print_r($lower);Array
(
[0] => яблоко
[1] => груша
[2] => банан
)Использование функции для регистронезависимого сравнения.
$string1 = 'Привет';
$string2 = 'пРиВеТ';
if (mb_strtolower($string1) === mb_strtolower($string2)) {
echo 'Строки равны';
}Строки равны
Приведение к нижнему регистру данных из форм для последующего сохранения в базе данных.
$username = 'Пользователь123';
$normalized = mb_strtolower($username, 'UTF-8');
// $normalized = 'пользователь123'Функция корректно обрабатывает символы из разных языков в одной строке.
echo mb_strtolower('ΕΛΛΑΔΑ и РОССИЯ');ελλάδα и россия
Аналоги в других языках
Mb strtolower в Python
Метод str.lower() работает с Unicode по умолчанию.
print('Привет, МИР!'.lower())привет, мир!
Mb strtolower в Javascript
Метод toLowerCase() также корректно обрабатывает Unicode в современных браузерах и средах выполнения.
console.log('Привет, МИР!'.toLowerCase());привет, мир!
Mb strtolower в MySQL
Функция LOWER() работает в зависимости от кодировки таблицы и подключения. Для Unicode рекомендуется использовать кодировку utf8mb4.
SELECT LOWER('Привет, МИР!');привет, мир!