Mb strtolower: примеры (PHP)

Преобразование строк в нижний регистр с помощью mb_strtolower
Раздел: Многобайтовые строки
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

strtolower

Стандартная функция для преобразования регистра, но она не поддерживает многобайтовые кодировки. Используется только для однобайтовых кодировок (например, ASCII, ISO-8859-1).

Функция для преобразования строки в верхний регистр с поддержкой многобайтовых кодировок. Применяется в аналогичных случаях, но для обратного преобразования.

Более универсальная функция, которая может преобразовывать строку в нижний, верхний регистр или регистр заголовка. Полезна для сложных преобразований.

Типичные ошибки

Использование с однобайтовой кодировкой

Применение функции к строке в однобайтовой кодировке без необходимости может немного замедлить выполнение, но не вызовет ошибки.

Неверная кодировка

Указание неверной кодировки может привести к некорректному результату или предупреждению.

echo mb_strtolower('Тест', 'ISO-8859-1');
��� (при условии, что исходная строка в UTF-8)
Отсутствие расширения mbstring

Попытка использовать функцию без подключенного модуля 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.

Пример php
$array = ['ЯБЛОКО', 'Груша', 'БАНАН'];
$lower = array_map('mb_strtolower', $array);
print_r($lower);
Array
(
    [0] => яблоко
    [1] => груша
    [2] => банан
)
Сравнение строк без учёта регистра

Использование функции для регистронезависимого сравнения.

Пример php
$string1 = 'Привет';
$string2 = 'пРиВеТ';
if (mb_strtolower($string1) === mb_strtolower($string2)) {
    echo 'Строки равны';
}
Строки равны
Нормализация пользовательского ввода

Приведение к нижнему регистру данных из форм для последующего сохранения в базе данных.

Пример php
$username = 'Пользователь123';
$normalized = mb_strtolower($username, 'UTF-8');
// $normalized = 'пользователь123'
Работа с различными языками

Функция корректно обрабатывает символы из разных языков в одной строке.

Пример php
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('Привет, МИР!');
привет, мир!

PHP mb_strtolower function comments

En
Mb strtolower Make a string lowercase