php mbstring扩展库处理中文字符

mbstring(Multibyte String 多字节字符串)

之前处理字符都是经过 substr strlen,可是如今要求精确多国语言并存就意味着多字节,PHP内置的字符串长度函数strlen没法正确处理中文字符串,它获得的只是字符串所占的字节数。对于GB2312的中文编码,strlen获得的值是汉字个数的2倍,而对于UTF-8编码的中文,就是1~3倍的差别了。  php

采用PHP字符串mbstring能够较好地解决这个问题。mb_strlen的用法和strlen相似,只不过它有第二个可选参数用于指定字符编码。例如获得UTF-8的字符串$str长度,能够用mb_strlen($str,’UTF-8′)。若是省略第二个参数,则会使用PHP的内部编码。内部编码能够经过mb_internal_encoding()函数获得,设置有两种方式: 函数

1. 在php.ini中设置mbstring.internal_encoding = UTF-8
2. 调用mb_internal_encoding(”GBK”) 编码

除了PHP字符串mbstring,还有不少切割函数,其中mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,可是都不会产生半个字符的现象。并且从函数切割对长度的做用也不一样,mb_strcut的切割条件是小于strlen, mb_substr是等于strlen,看下面的例子, spa

<?php

    $str =  '我是一串比较长的中文-www.jefflei.com'; 
    echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8'); 
    echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); 

?>

输出以下:
mb_substr:我是一串比较
mb_strcut:我是 code

须要注意的是,PHP字符串mbstring并非PHP核心函数,使用前须要确保在php编译模块时加入mbstring的支持:

(1)编译时使用–enable-mbstring
(2)修改/usr/local/lib/php.inc
default_charset = “zh-cn”
mbstring.language = zh-cn
mbstring.internal_encoding =zh-cn utf-8

PHP字符串mbstring类库内容比较多,还包括mb_ send_ mail 之类的email处理函数等 字符串

相关文章
相关标签/搜索