Стрлен для не английского языка - PullRequest
0 голосов
/ 25 февраля 2010

Я хочу отобразить краткое описание статей на домашней странице. Описания представляют собой смесь тайского и английского языков.

Я использую эту функцию для strlen

mb_strlen($str, 'UTF-8');

но это не точно, поскольку некоторые описания заканчиваются одной строкой, а некоторые доходят до 3 строк, и я хочу показать описания двух строк.

Если strlen больше 155, я делаю

$descr = mb_strlen($descr, 'UTF-8') > 155 ? substr($descr, 0, 152) . '...' : $descr;

Спасибо.

Ответы [ 3 ]

5 голосов
/ 25 февраля 2010

Глифы , графические представления символов, имеют разную ширину в разных шрифтах. Просто сравните m с i:

ммммммммммы
iiiiiiiiii

Оба символа повторяются десять раз. Но глиф m гораздо шире, чем глиф i.

Таким образом, вы не можете сделать вывод о ширине ее графического представления из числа символов (кроме моноширинных шрифтов).

2 голосов
/ 25 февраля 2010

substr небезопасно для использования с данными utf-8. Используйте mb_substr

0 голосов
/ 25 февраля 2010

, если вы хотите запретить записи с 3 или более строками, сначала разбейте строку на '\n', а затем выполните обрезку с mb_substr

...