php預設是不支援mb_strlen()函數的,需要安裝擴充模組。安裝方法如下:
yum install php-mbstring
找到mbstring.so的位置,可以使用rpm -ql 安裝的rpm名
修改/etc/php.ini設定檔,增加
extension=php_mbstring.so
並確保php_mbstring.so模組在extension_dir = "/usr/lib64/php/modules"配置所指的路徑裡。
原文:http://cyibeike.blog.163.com/blog/static/21112578201252032759277/
當字元全是英文字元的時候,兩者是一樣。這裡主要比較一下,中英文混排的時候,兩個計算結果。(測試時編碼方式是UTF8)
<?php $str=‘中文a字1符‘; echo strlen($str); echo ‘<br />‘; echo mb_strlen($str,‘UTF8‘); //輸出結果 //14 //6 ?>
結果分析:在strlen計算時,對待一個UTF8的中文字元是3個長度,所以“中文a字1符”長度是3*4+2=14
在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字元當作長度1來計算,所以“中文a字1符”長度是6
引用自:http://www.jb51.net/article/19078.htm
mb_substr()函數的使用:
PHP截取字串的函數有:substr() / mb_substr() / mb_strcut()
這些字串的區別是什麼呢。 substr()函數分割包括中文字元往往會遇到亂碼問題 而mb_substr()分割中文字串就不會有亂碼問題 同樣的是用mb_strcut()分割中文字串也沒有亂碼的問題
mb_substr()、mb_strcut的用法與substr()相似,只是在mb_substr()、mb_strcut()函數後面要指定字串的編碼。mb_substr()、mb_strcut函數是需要開啟伺服器的php_mbstring.dll,在php.ini在把php_mbstring.dll開啟即可。
mb_substr是按字元分割,而mb_strcut是按位元組來分割,但是都不會產生半個字元的現象。
例如: $aaa = "this這是中文字串"; echo mb_substr($aaa,0,6,'UTF-8');//輸出值為: this這是 echo mb_strcut($aaa,0,6,'UTF-8');//輸出值為:this這 引用自: http://www.lao8.org/html/8/2011-9-4/mb_substr.html