首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带线尾的grapheme_strlen函数的奇异行为

带线尾的grapheme_strlen函数的奇异行为
EN

Stack Overflow用户
提问于 2013-09-19 13:46:32
回答 1查看 342关注 0票数 1

有人能解释一下strlen扩展中Unicode函数的这种奇怪行为吗?

代码语言:javascript
复制
var_dump(grapheme_strlen("a\r\n")); // (ASCII 'a') length: 3
var_dump(grapheme_strlen("の\r\n")); // length: 2
var_dump(grapheme_strlen("\r\n")); // length: 2

似乎grapheme_strlen正在将"\r\n“(CR,这是在Windows上用于行分隔的两个单独的代码点)计算为一个单独的字素,考虑到函数的名称,这是相当合理的,但是如果行结束前有一个非ASCII字符,它只会。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-19 15:34:29

这是个窃听器。grapheme_strlen应该在Unicode标准附件29 (Unicode文本分割)中定义的字形簇边界上工作。标准明确规定不能打破CR和LF之间的界限。

如果您看一下PHP源代码,grapheme_strlen只是返回字符数。用于ASCII字符串。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18896428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档