php分割包含中文的字符串
这两个函数都是获取子字符串,而mb_substr()一般在字符串中包含中文的情况下使用。
其中有个很重要的区别是mb_substr()按字来切分字符串,不管中英文。
例子如下
1 < ?php 2 $operation="中文test英文abc"; 3 var_dump(strlen($operation)); 4 $price = mb_substr ( $operation, 0, strlen ( $operation ), 'utf-8' ); 5 var_dump($price); 6 $price = mb_substr ( $operation, 0, strlen ( $operation )-8, 'utf-8' ); 7 var_dump($price); 8 ?>
//输出为
1 int 19 2 string ‘中文test英文abc’ (length=19) 3 string ‘中文test英文abc’ (length=19)
大家有没有注意到,第二个函数我使用的是的$length参数长度为字符串长减8啊,为何结果却一样呢?
这就是我今天要说的区别:mb_substr()将字符按字符数读取,故读取字符串”中文test英文abc”的长度为11,而实际上中文字符串占三个字节,所以输出长度为19。
如果需要按字节来截取包含中文的字符串可以使用mb_strcut()函数。另外需要注意的是mb开头的函数都必须启用PHP的php_mbstring.dll扩展才可使用。