一个包含中英文的字符串如何获得它的自然长度

考察是否有encoding的知识和意识。

编写测试代码如下

<?php
/**
 * 获取包含中英文的字符串长度
 */
$str = '测试abc123';
echo strlen($str)."<br>";
echo mb_strlen($str,'utf-8');
?>

输出结果为12和8,PHP自带的函数strlen()是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节,而中文则不然,在gbk编码下每个中文字符所占字节为2,而在utf-8编码下每个中文字符所占字节为3,测试代码用的UTF-8编码,所以输出12,函数mb_strlen(string $str[,string $encoding = mb_internal_encoding()])需要扩展库mb_string.dll才能使用,第一个参数str是要检查长度的字符串,第二个参数encoding为字符编码,如果省略,则使用内部字符编码,函数返回具有encoding编码的字符串str包含的字符数,多字节的字符被计为1,如果给定的encoding无效则返回FALSE,所以输出结果为8。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值