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扩展才可使用。

posted @ 2013-11-23 15:39  jayxhj  阅读(2748)  评论(0编辑  收藏  举报