PHP substr()函數能夠分割文字,但要分割的文字若是包括中文字符每每會遇到問題,這時能夠用mb_substr()/mb_strcut這個函數,mb_substr() /mb_strcut的用法與substr()類似,只是在mb_substr()/mb_strcut最後要加入多一個參數,以設定字符串的編碼,可是 通常的服務器都沒打開php_mbstring.dll,須要在php.ini中把php_mbstring.dll打開。php
<?php服務器
echo
mb_substr(
'咱們都是好孩子hehe'
,0,9);
app
?>函數
輸出:咱們都編碼
如今咱們加上字符集utf-8spa
<?php
echo
mb_substr(
'咱們都是好孩子hehe'
,0,9,
'utf-8'
);
?>
code
輸出:咱們都是好孩子heorm
第一個是以三個字節爲一箇中文,這就是utf-8編碼的特色,下面加上utf-8字符集說明,因此,是以一個字爲單位來截取的utf-8
下面是ecshop裏面的截取UTF-8編碼下字符串的函數字符串
function sub_str($str, $length = 0, $append = true)
{
$str = trim($str);
$strlength = strlen($str);
if ($length == 0 || $length >= $strlength)
{ return $str; //截取長度等於0或大於等於本字符串的長度,返回字符串自己
}
elseif ($length < 0) //若是截取長度爲負數
{ $length = $strlength + $length;//那麼截取長度就等於字符串長度減去截取長度
if ($length < 0)
{$length = $strlength;//若是截取長度的絕對值大於字符串自己長度,則截取長度取字符串自己的長度
}
}
if (function_exists('mb_substr'))
{$newstr = mb_substr($str, 0, $length, EC_CHARSET);
}
elseif (function_exists('iconv_substr'))
{$newstr = iconv_substr($str, 0, $length, EC_CHARSET);
}
else
{//$newstr = trim_right(substr($str, 0, $length));
$newstr = substr($str, 0, $length);
}
if ($append && $str != $newstr)
{$newstr .= '...';
}
return $newstr;
}