PHP—包含emojis/特殊字符的字符串长度

PHP—包含emojis/特殊字符的字符串长度,php,unicode,unicode-string,Php,Unicode,Unicode String,我正在为一个移动应用程序构建一个API,我似乎在计算包含emojis的字符串的长度时遇到了问题。我的代码: $str=“您的函数都在计算不同的东西 Graphemes:我附上了一张图片来帮助说明@bobince给出的答案 本质上,所有非代理项对代码点在UTF-16中以两个字节结束,而所有代理项对代码点以四个字节结束。如果我们将其除以二,则得到等效的预期长度值 请原谅图片中的错误,上面写着“代码点”,应该写着“代码单位” 我知道这是一个老问题,但我最近遇到了这个问题,这可能对其他人也有帮助 问题中

我正在为一个移动应用程序构建一个API,我似乎在计算包含emojis的字符串的长度时遇到了问题。我的代码:


$str=“您的函数都在计算不同的东西


Graphemes:我附上了一张图片来帮助说明@bobince给出的答案

本质上,所有非代理项对代码点在UTF-16中以两个字节结束,而所有代理项对代码点以四个字节结束。如果我们将其除以二,则得到等效的预期长度值

请原谅图片中的错误,上面写着“代码点”,应该写着“代码单位”


我知道这是一个老问题,但我最近遇到了这个问题,这可能对其他人也有帮助

问题中的字符串:


$str=“尝试使用mb\u substr,mb\u str长度可以是option@Sibidharan你说“我的方法”是什么意思?你使用了什么样的计数方式?你期望得到什么?根据上表,
@bobince检查一下!我需要计算unicode点数。对于多色表情@Sibidharan来说,真正的挑战似乎是JS令人困惑、支离破碎、不完整,但它本质上似乎是试图将组合字符组合在一起。您是否正在尝试在PHP中计算grapheme集群?如果是这样,您正在寻找@bobince,您将如何处理带有零宽度Joiner的表情符号?像这个