PHP substr(),mb_substr(),mb_strcut()比较

                                        PHP substr(),mb_substr(),mb_strcut()比较

1、前言:
    1)、这三个函数都用来截取字符串,所不同的是:
        substr是最简单的截取,无法适应中文;
        mb_substr是按字来切分字符串;
        mb_strcut是按字节来切分字符串,截取中文都不会产生半个字符的现象。
        
    2)、这三个函数的前三个参数完全一致,即:
        第一个参数是操作对象
        第二个参数是截取的起始位置
        第三个参数是截取的数量
        mb_substr和mb_strcut还有第四个参数:第四个参数可以根据不同的字符集进行设置
        
2、使用:
    1)、string substr ( string $string , int $start [, int $length ] )
        (1)、start
            1]、为非负数:返回的字符串将从 string 的 start 位置开始, 至字符串结尾
                代码:echo substr('abcdef', 2);
                返回:cdef
            2]、为0:返回全部字符串
                代码:echo substr('abcdef', 0);
                返回:abcdef
            3]、为负数:从结尾往前第n个,至字符串结尾
                代码:echo substr('abcdef', -3);
                返回:def
            4]、start等于字符串的长度
                返回空字符串 '';
            5]、start大于字符串的长度
                返回:bool(false)
        (2)、length
            1]、正数:从start开始,截取start后面的length长度的字符串
                代码:echo substr('abcdef', 2, 4);
                返回:cdef
            2]、如果是 0,FALSE 、 NULL ,返回一个空字符串
            3]、如果是一个负数,将从尾部计数;也即返回的字符串为从start开始至字符串结尾前|length|处,||表示绝对值。
                代码:echo substr("abcdef", 2, -1);
                返回:cde
                代码:var_dump(substr("abcdef", 4, -4));
                返回:bool(false)
                
    2)、mb_substr是按字符分割,而mb_strcut是按字节来分割,但是都不会产生半个字符的现象。
        string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
        string mb_strcut ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
        案例:
            代码:
                echo mb_strcut( '渐a行渐远渐无书!', 0, 5 ).'
';
                echo mb_substr( '渐a行渐远渐无书!' ,0, 5 );
            返回:
                渐a
                渐a行渐远
               

你可能感兴趣的:(#,PHP)