在php中substr(),mb_substr()及mb_strcut三個函數(shù)都是字符截取函數(shù),但是substr截取中文時會有亂碼,而后兩者支持中文截取,下面我來介紹介紹。
substr()函數(shù)
substr(string,start,length)
string表示要截取的對象,start表示從哪個位置開始截取,0表示從頭開始,正數(shù)表示從這個數(shù)的位置后面截取,負數(shù)表示從結(jié)尾算開始截取的位置,但依然是從左到右截,length表示截取長度.負數(shù)表示排除或忽略結(jié)尾多少個字符.代碼如下:
實例代碼如下:
$siteurl = 'www.phpfensi.com';print_r (substr($siteurl,-6,2));exit;
如果要截取雙字節(jié)的漢字.則要用PHP mb_substr函數(shù)或mb_strcut函數(shù),但這兩個函數(shù)依賴php擴展php_mbstring.dll組件,所以要配置你的服務(wù)器.即把php安裝目錄中的php_mbstring.dll文件復(fù)制到你的windows 2003 的c盤的Windows/system32目錄中.
舉個例子:
echo mb_substr('這樣一來我的字符串就不會有亂碼^_^', 0, 7, 'utf-8');
輸出:這樣一來我的字,代碼如下
輸出:這樣一
從上面的例子可以看出,mb_substr是按字來切分字符,而mb_strcut是按字節(jié)來切分字符,但是都不會產(chǎn)生半個字符的現(xiàn)象……代碼如下:
再舉個例子,有一段文字,分別用mb_substr和mb_strcut來做切分,代碼如下:
本文章總結(jié):從上面實例可以看得出來,substr只支持單字節(jié)的,這樣只適合英文截取,而mb_substr函數(shù)是雙字體截取了,正好可用于中文了,而mb_strcut是三字節(jié)了。