眾所周知,php 自帶的 strlen 與 substr 函數沒法處理中文字符,于是,我們會用 mb_ 系列函數替代。但是,沒有 mbstring 庫怎么辦?這就需要我們自己寫一個來替代了,廢話不多說,先上代碼:
/* from Internet, author unknown */
if (!function_exists('mb_substr')) {
function mb_substr($str, $start, $len = '', $encoding="UTF-8"){
$limit = strlen($str);
for ($s = 0; $start > 0;--$start) {// found the real start
if ($s >= $limit)
break;
if ($str[$s] <= "/x7F")
++$s;
else {
++$s; // skip length
while ($str[$s] >= "/x80" && $str[$s] <= "/xBF")
++$s;
}
}
if ($len == '')
return substr($str, $s);
else
for ($e = $s; $len > 0; --$len) {//found the real end
if ($e >= $limit)
break;
if ($str[$e] <= "/x7F")
++$e;
else {
++$e;//skip length
while ($str[$e] >= "/x80" && $str[$e] <= "/xBF" && $e < $limit)
++$e;
}
}
return substr($str, $s, $e - $s);
}
}
新聞熱點
疑難解答