string substr ( string $string , int $start [, int $length ] )
1、按字节切分
2、常用于切分英文字符,切分中文常会出现乱码。
?
示例:
有php程序文件编码是utf-8,文件内容如下:
class="php" name="code">$str = "123456中国"; echo substr($str,0,7); echo substr($str,0,9);
?
结果如下:
?
结果分析:
由于文件编码是utf-8,每个中文字符占3个字节,substr按字节切分字符串,前6个字节分别对应“123456”,第789三个字节对应字符“中”,所以,从0位开始截取长度为9的结果是“123456中”。
而0位从开始截取长度为7的子串时,字符“中”被从拆开了,从结果是“123456”,加上后面的乱码。
string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )
1、按字符切分
2、常用切分中文字符,这样可以避免出现中文乱码
3、切分中文时,需要指定编码,指定的编码须确保与当前文件编码一致。
?
示例:
有php程序文件编码是utf-8,文件内容如下:
$str = "123456中国"; echo mb_substr($str,0,8,'utf-8');
?
结果如下:
?
补充说明:
1、gbk编码下,一个中文字符占两个字节,一个英文字符占一个字节。
2、utf-8编码下,一个中文字符占三个字节,一个英文字符占一个字节。
?
http://huangqiqing123.iteye.com/blog/1975549
?