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