生成一个不超过指定长度(以字节计算)的字符串函数

<?
/*
功能:
    将一个字符串转换成不超过特定长度(以字节计算)的字符串
返回:
    转换后不超过指定长度(以字节计算)的字符串
参数:
    $str 待转换的字符串
    $len 最大长度(以字节计算)

*/
function fixlenstr($str,$len){
   
$str = (string)$str;
   
$len = (int)$len;

   
$strlen strlen($str);
   if(
$len>$strlen$len $strlen;

   
$i 0;
   
$fixlen 0;
   while(
$i<$len){
      
$chr $str[$i];
      
$i++;
      if(
ord($chr)<0x80$fixlen++;
      elseif(
$i<$len){
        
$i++;
        
$fixlen += 2;
      }
   }

   return 
substr($str,0,$fixlen);
}

//测试
$test = array(
             
'工了a以b在d有e' => array('ab',-2,0,1,'1',3,4,5,6,14,16)
             );

while(list(
$str,$len)=each($test)){
   echo 
$str '<hr>';
   
$count count($len);
   for(
$i=0;$i<$count;$i++){
      
$fixlenstr fixlenstr($str,$len[$i]);
      echo 
$len[$i] . ' ==> ' $fixlenstr ' ==> ' strlen($fixlenstr) . '<br>';
   }
}
//
?>