脚本宝典收集整理的这篇文章主要介绍了在PHP中使用半角假名计算日语多字节字符串的长度,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我想要长度,我使用Mb_strlen()并将它们中的每一个计为长度为1.这对大多数用途来说都没问题.
但是,我(有一个日本客户)被问到只计算半宽假名为0.5(为了文本字段的最大长度),因为显然这就是日本网站的做法.我这样做是使用mb_strwidth()将全宽计为2,将半宽计为1,然后我除以2.
然而,这种方法也将罗马字符计为1,所以像Chocアイス这样的东西会算作7 ..然后我除以2来计算汉字,我得到3.5.但我实际上想要5.5(4个半宽假名罗马吉1.5的4个).
//编辑:
更多信息:任何一个全长和半角的角色(甚至非假名)应该是1全宽,0.5是半宽.例如,像¥,3 @这样的字符(应该都是1,但像¥,3 @这样的字符(应该都是0.5)
$raw = 'Chocアイス'; $full = mb_convert_kana($raw,'K'); $len = mb_strlen($raw) - (mb_strwidth($full) - mb_strwidth($raw))/2; assert($len === 5.5);
但是,您确定要将基本拉丁字符视为全宽吗?确实存在基本拉丁字符的全宽种类 – 也就是说,Choc应该被认为与Choc相同吗?
通常,诸如“A”和“ア”之类的字符的宽度为1,但“A”和“ア”的宽度为2(这是mb_strwidth的宽度).我必须谨慎对待那个问题.
鉴于您的编辑,mb_strwidth(或mb_strwidth / 2)完全符合您的要求.
以上是脚本宝典为你收集整理的在PHP中使用半角假名计算日语多字节字符串的长度全部内容,希望文章能够帮你解决在PHP中使用半角假名计算日语多字节字符串的长度所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。