php截取多余字符用省略号代替

1,118次阅读
没有评论

共计 897 个字符,预计需要花费 3 分钟才能阅读完成。

/**

  • $sourcestr 需要截取的字符串
  • $cutlength 需要保存字符串的长度
    */
    function cut_str($sourcestr,$cutlength)
    {
    $returnstr='';
    $i=0;
    $n=0;
    $str_length=strlen($sourcestr);// 字符串的字节数
    while (($n<$cutlength) and ($i<=$str_length)) {$temp_str=substr($sourcestr,$i,1); $ascnum=Ord($temp_str);// 得到字符串中第 $i 位字符的 ascii 码 if ($ascnum>=224) // 如果 ASCII 位高与 224,{$returnstr=$returnstr.substr($sourcestr,$i,3); // 根据 UTF- 8 编码规范,将 3 个连续的字符计为单个字符
    $i=$i+3; // 实际 Byte 计为 3
    $n++; // 字串长度计 1
    }
    elseif ($ascnum>=192) // 如果 ASCII 位高与 192,{$returnstr=$returnstr.substr($sourcestr,$i,2); // 根据 UTF- 8 编码规范,将 2 个连续的字符计为单个字符
    $i=$i+2; // 实际 Byte 计为 2
    $n++; // 字串长度计 1
    }
    elseif ($ascnum>=65 && $ascnum<=90) // 如果是大写字母,{$returnstr=$returnstr.substr($sourcestr,$i,1); $i=$i+1; // 实际的 Byte 数仍计 1 个 $n++; // 但考虑整体美观,大写字母计成一个高位字符 } else // 其他情况下,包括小写字母和半角标点符号,{$returnstr=$returnstr.substr($sourcestr,$i,1); $i=$i+1; // 实际的 Byte 数计 1 个 $n=$n+0.5; // 小写字母和半角标点等与半个高位字符宽… } } if ($str_length>$i){$returnstr = $returnstr . "…";// 超过长度时在尾处加上省略号}
    return $returnstr;
    }

     

正文完
 0
评论(没有评论)