function my_substr($input,$start,$length)
{
$len =strlen($input);
$output ='';
echo"input:$input,len=$len,start=$start,length=$length<br/>";
$flag =0;
for($i=0,$j=0;$i<$len,$j<$length;)
{
$currchat = $input{$i};
if(ord($currchat)>0XA0)
{
echo "arrive here,i=$i
";
if($start-1==$i)
{
$start ++;
$flag = 1;
}
else if($start==$i)
{
$flag = 1;
}
if($flag)
{
$output .= substr($input,$start+$j,2);
$j+=2;
}
echo"first=$start,flag=$flag,output=$output
";
$i +=2;
}
else {
if($start==$i)
{
$flag = true;
}
if($flag)
{
$output .= substr($input,$start+$j,1);
$j++;
}
$i ++;
}
}
return$output;
}
$output = my_substr($input,12,25);
echo "output=$output<br/>";
以上是我写的一个小方法,依照着substr的参数做的,测试了一些字符,包含中英文都有的,没有出错。
大家可以拿来测试一下,欢迎批评指正......