function str_sub($str,$start,$len)
{
$strlen=strlen($str);
$clen=0;
for( $i = 0; $i < $strlen; $i ++, $clen ++ )
{
if ( $clen >= $start + $len )
break;
if( ord( substr($str,$i,1)) > 0xa0 )
{
if ( $clen >= $start )
$tmpstr .= substr($str, $i, 2);
$i++;
}
else
{
if ( $clen >= $start )
$tmpstr .= substr($str, $i, 1);
}
}
return $tmpstr;
}
{
$strlen=strlen($str);
$clen=0;
for( $i = 0; $i < $strlen; $i ++, $clen ++ )
{
if ( $clen >= $start + $len )
break;
if( ord( substr($str,$i,1)) > 0xa0 )
{
if ( $clen >= $start )
$tmpstr .= substr($str, $i, 2);
$i++;
}
else
{
if ( $clen >= $start )
$tmpstr .= substr($str, $i, 1);
}
}
return $tmpstr;
}
{
$len = strlen($str);
$r = array();
$n = 0;
$m = 0;
for($i = 0; $i < $len; $i++) {
$x = substr($str, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr('00000000'.$a, -8);
if ($n < $start){
if (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$i += 2;
}
$n++;
}else{
if (substr($a, 0, 1) == 0) {
$r[ ] = substr($str, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[ ] = substr($str, $i, 2);
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[ ] = substr($str, $i, 3);
$i += 2;
}else{
$r[ ] = '';
}
if (++$m >= $lenth){
break;
}
}
}
return $r;
} // End subString_UTF8;
}// End String#由于此函数返回的是一个数组,因此要配合join函数来显示字符串:
#join('',subString_UTF8($str, $start, $lenth));
#在页面显示的时候还可以在此语句后面连一个"..."