As we all know, the strlen and substr functions that come with PHP cannot handle Chinese characters, so we will use the mb_ series of functions instead. But what if there is no mbstring library? This requires us to write one ourselves to replace it. Without further ado, let’s start with the code:
/* 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);
}
}