牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-11-30 投稿人: 浏览次数:2922

考察是否有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。


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。