Ale*_*Vay 11 javascript php validation emoji
我想在新用户在我的页面注册时验证名称.其中一项检查是字符限制是否超过100.
但是,因为像❤️这样的单个表情符号(那些实际上是4个表情符号在一起?看截图)算得多于1个字符我有问题来验证名称.我想在名字中允许使用表情符号,因为现在有一颗心,星或类似的东西很常见,但我不想允许超过100个字符的名字.
所以我有这个问题:
PS:我在谈论一个php解决方案,但我也会接受Javascript,即使我不喜欢它.
编辑:我的示例表情符号似乎是这个字符串: \ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69
请注意这个问题的提到的屏幕截图:
Eva*_*kas 10
作为一个潜在的JavaScript解决方案(如果你不介意添加一个库),Lodash已经在他们的toArray模块中解决了这个问题.
例如,
_.toArray('12').length; // --> 3
Run Code Online (Sandbox Code Playgroud)
或者,如果你想从字符串中敲掉几个任意字符,你就可以操作并重新加入数组,例如:
_.toArray("trimToEightGlyphs").splice(0,8).join(''); // --> 'trimToE'
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |