Как получить точное количество многобайтовых символов?
Вопрос
Я пытался:
mb_strlen('普通话');
strlen('普通话');
оба они выводят 9 символов, в то время как на самом деле в них всего 3 символа.
Как правильно подсчитывать символы?
Решение
вы должны обязательно указать кодировку во втором параметре
т. е.
mb_strlen('普通话', 'UTF-8');
смотрите на руководство пользователя
Другие советы
Если у вас нет доступа к расширению строки mb, это также работает (и я считаю, что это быстрее):
strlen(utf8_decode('普通话')); // 3
Один китайский символ не равен одному символу ascii. mb_strlen - это правильный способ подсчета многобайтовых символов, если строка в кодировке UTF-8.
смотрите здесь: http://www.herongyang.com/PHP-Chinese/ Многобайтные-UTF-8 mb_strlen.html р>
Не связан с StackOverflow