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行渐远