Основные отличия
Функция strlen()
- Что делает: Возвращает количество байтов в строке.
- Поддерживаемые кодировки: Однобайтовые кодировки (ASCII, ISO-8859-* и т.д.).
- Когда использовать: Если работа ведётся с латиницей или символами, которые занимают один байт.
Функция mb_strlen()
- Что делает: Возвращает количество символов в строке.
- Поддерживаемые кодировки: Многобайтовые кодировки (UTF-8, UTF-16, Shift_JIS и т.д.).
- Когда использовать: Если работа ведётся с кириллическими символами, китайскими иероглифами или другими символами, занимающими несколько байт.
Пример разницы
$str_utf8 = "Привет, мир!";
// strlen() возвращает количество байтов
echo strlen($str_utf8); // Вывод: 24 (12 символов × 2 байта на символ в UTF-8)
// mb_strlen() возвращает количество символов
echo mb_strlen($str_utf8, 'UTF-8'); // Вывод: 12 (количество символов)Когда использовать
strlen(): Для работы с однобайтовыми символами и ASCII-строками.mb_strlen(): Для работы с мультбайтовыми символами и UTF-8.
Важные моменты
- Если пренебречь использованием
mb_strlen()при работе с UTF-8, можно столкнуться с некорректным определением длины строки. - Всегда указывайте кодировку в
mb_strlen(), чтобы избежать неожиданных результатов.