美文网首页PHP
PHP字符处理函数:strlen() -- 内置函数

PHP字符处理函数:strlen() -- 内置函数

作者: MangfuStudio | 来源:发表于2018-08-16 11:23 被阅读0次

函数简介

strlen()函数获取字符串的长度,但此函数获取的是字符串在内存中所占的 字节 长度,并不是字符的长度。
成功返回:字符串在内存中所占的字节长度
如果度字符串为空,返回:0

函数原型

int strlen(String $str)


strlen()实例

  1. 文件编码为 UTF-8
/*============
 文件编码:UTF-8
============*/
<?php
$e_str = "Hello World" ; // 字符数 11
$c_str = "你好 世界" ;    //字符数 5
var_dump(strlen($e_str)) ;
var_dump(strlen($c_str)) ;
?>
//运行结果
D:\WampServer\www\MyPhpCode\01.php:4:int 11
D:\WampServer\www\MyPhpCode\01.php:5:int 13

var_dump(strlen($e_str)) :度量英文,得到了正确结果11。
ver_dump(strlen($c_str)) :度量中文,得到了错误结果13。
为什么strlen()在度量中文的时候会错误呢?前面已经讲到,strlen()只是返回字符串在内存中占的字节数。由于我的php编码为 UTF-8 ,而一个字母在 UTF-8 中所占的字节数为 1 ,一个汉语在 UTF-8 中占3个字节。

故:
"Hello World" 的字节数为:10(字符数) x 1(一个字符所占字节) + 1(空格所占字节) = 11
"你好 世界" 的字节数为:4(字符数) x 3(一个字符所占字节) + 1(空格所占字节) = 13

在例子2中,我将把php文件的编码改为GBK ,在不修改原代码的情况下看下结果。

/*============
 文件编码:GBK
============*/
<?php
$e_str = "Hello World" ; // 字符数 11
$c_str = "你好 世界" ;    //字符数 5
var_dump(strlen($e_str)) ;
var_dump(strlen($c_str)) ;
?>
//运行结果
D:\WampServer\www\MyPhpCode\01.php:4:int 11
D:\WampServer\www\MyPhpCode\01.php:5:int 9

var_dump(strlen($c_str)):的结果由 13 变为了 9
因为 GBK 中,一个英文字母占一个字节,一个汉语占2个字节。
故:
"Hello World" 的字节数为:10(字符数) x 1(一个字符所占字节) + 1(空格所占字节) = 11
"你好 世界" 的字节数为:4(字符数) x 2(一个字符所占字节) + 1(空格所占字节) = 9


总结

  • strlen()获取传入字符串的长度(字节长度)
  • strlen()返回值为类型为 int




    每日一赏

相关文章

网友评论

    本文标题:PHP字符处理函数:strlen() -- 内置函数

    本文链接:https://www.haomeiwen.com/subject/iodnbftx.html