Функция strlen() не работает с русскими символами

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Вирус
Сообщения: 28
Зарегистрирован: Сб мар 21, 2015 7:36 am

Функция strlen() не работает с русскими символами

Сообщение Вирус » Сб авг 08, 2015 1:34 pm

Добрый день. Столкнулся с такой проблемой функция strlen() не работает с русскими символами.

Код: Выделить всё

$str = 'абвгдеёжзи'; 
$str = strlen($str);
echo $str; 
Результат будет 20,хотя на самом деле в переменную вбито всего 10 символов.
Есть какие соображения? Спасибо.

Реклама
lyod
Сообщения: 75
Зарегистрирован: Пн янв 06, 2014 11:13 pm
Поблагодарили: 1 раз

Re: Функция strlen() не работает с русскими символами

Сообщение lyod » Сб авг 08, 2015 1:44 pm

Кодировка какая? UTF-8? Почти все кириллические символы имеют по 2 байта на символ. Вот и выдаёт неправильное количество. При работе с UTF-8 используйте mb_strlen(). Подробнее о ней читайте на php.net

Аватара пользователя
Slash
Администратор
Сообщения: 2122
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 75 раз

Re: Функция strlen() не работает с русскими символами

Сообщение Slash » Сб авг 08, 2015 5:24 pm

Функцию strlen() можно заменить на функцию iconv_strlen() (вернет количество символов в строке), пример использования русских символов:

Код: Выделить всё

$str = 'абвгдеёжзи'; 
$str = iconv_strlen($str, 'utf-8');
echo $str; 

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость