美文网首页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