<?php
function utf_substr($str,$len)
{
for($i=0;$i<$len;$i++)
{
$temp_str=substr($str,0,1);
if(ord($temp_str) > 127)      //这里为什么要用127
{
$i++;                         //在这里$i++代表什么意思
if($i<$len)
{
$new_str[]=substr($str,0,3);
$str=substr($str,3);
}
}
else
{
$new_str[]=substr($str,0,1);
$str=substr($str,1);
}
}
return join($new_str);
}
if(ord($temp_str) > 127)    这里127代表什么意思$i++;                         //在这里$i++代表什么意思

解决方案 »

  1.   

    ASCII 127以上的无法完全显示。
    $i++ 是隔一个ASCII
      

  2.   

    LZ这个函数不好用吗?
    我再给你发一个,我一直在用的//截取中文字符串
    function mysubstr($str, $start, $len) 
    {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
    if(ord(substr($str, $i, 1)) > 0xa0) {
    $tmpstr .= substr($str, $i, 2);
    $i++;
    } else
    $tmpstr .= substr($str, $i, 1);
    }

    return $tmpstr;
    }
      

  3.   


    是不是你参数调用的不对,我一直在用啊
    $a = mysubstr($a,0,10);这样
    试试
      

  4.   

    string mb_substr ( string $str, int $start [, int $length [, string $encoding]] )
    有现成的函数,为啥还要自定义函数.