Количество символов длина emoji?
Я хочу проверить имя, когда новый пользователь регистрируется на моей странице. Одна из этих проверок - если лимит символов не превышает 100.
но так как один смайлик, как
2 ответов
Unicode определяет абстрактные символы как кодовые точки, но то, что позволяет отображать его на экране, - это шрифт. Шрифт-это набор графических фигур, называемых глифами, и они являются визуальным представлением кодовой точки или последовательности кодовых точек. Последовательность одной или нескольких кодовых точек, отображаемых в виде единый графический блок называется графема.
Если вам нужно получить длину в единицах графемы (а не символы, например mb_strlen
сделал бы), вы можете использовать grapheme_strlen
:
$emoji = "\u{1F469}\u{200D}\u{2764}\u{FE0F}\u{200D}\u{1F48B}\u{200D}\u{1F469}";
echo $emoji , " : " , strlen($emoji) , "\n"; // 27, count bytes
echo $emoji , " : " , mb_strlen($emoji) , "\n"; // 8, count characters
echo $emoji , " : " , grapheme_strlen($emoji) , "\n"; // 1, count grapheme units
как потенциальное решение javascript (если вы не против добавления библиотеки), Lodash решил эту проблему в своем toArray модуль.
например,
_.toArray('12').length; // --> 3
или, если вы хотите выбить несколько произвольных символов из строки, вы манипулируете и присоединяетесь к массиву, например:
_.toArray("trimToEightGlyphs").splice(0,8).join(''); // --> 'trimToE'