【发布时间】:2017-03-14 17:53:40
【问题描述】:
我想在新用户在我的页面上注册时验证名称。其中一项检查是字符限制是否不超过 100。
但既然只有一个表情符号像??????❤️?????????? (实际上是 4 个表情符号在一起?见屏幕截图)超过 1 个字符 我在验证名称时遇到问题。我想要在名称中允许使用表情符号,因为现在有心形、星形或类似的东西在其中很常见,但我不想允许超过 100 个字符的名称。
所以我有这个问题:
- 如何将一个表情符号算作所有表情符号中的一个字符(如果可能的话)?
PS:我说的是 php 解决方案,但我也愿意接受 Javascript,即使我不喜欢它。
编辑:我的示例表情符号似乎是这个字符串:\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69
请注意上面提到的这个问题的截图:
【问题讨论】:
-
PHP 警告意味着您将数组传递给
trim,而不是字符串。这是您代码中的错误,PHP 没有问题,也与 emoji 无关。 -
哦,你是对的。我发现了那个错误并编辑了我的问题。谢谢。 @deceze
-
不管怎样,这个表情符号由 8 个 Unicode 标量值序列组成:U+1F469 WOMAN; U+200D 零宽度连接器; U+2764 重黑色心脏; U+FE0F 变化选择器-16; U+200D 零宽度连接器; U+1F48B 吻痕; U+200D 零宽度连接器; U+1F469 女人。一些编程语言会将 WOMAN 和 KISS MARK 视为两个字符,因为这些字符需要两个 UTF-16 代码单元来表示。
-
基本上......是否????❤️??????????是一个还是四个表情符号取决于显示它的系统是否知道可能的组合。
-
grapheme_strlen将其计为一个字符:3v4l.org/0cVF1
标签: javascript php validation emoji