php 截取UTF-8 GBK汉字

来源:互联网 发布:代理服务器ip和端口 编辑:程序博客网 时间:2024/05/01 10:02

整合代码function tpl_mbsubstr($str,$start,$len,$fCode = "UTF-8") {    switch ($fCode){        case "UTF-8" :               if($start < 0)      $start = strlen($str)+$start;            $retstart = $start+getOfFirstIndex($str,$start);    //  echo $retstart;      $retend = $start + $len -1 + getOfFirstIndex($str,$start + $len);     // echo $retend;      return substr($str,$retstart,$retend-$retstart+1);           default:        $tmpstr='';            $start = $start*2;            $len   = $len*2;            $strlen = strlen($str);            for ( $i = 0; $i < $strlen; $i++ ) {                if ( $i >= $start && $i < ( $start+$len ) ) {                    if ( ord(substr($str, $i, 1)) > 129 ) $tmpstr .= substr($str, $i, 2);                    else $tmpstr .= substr($str, $i, 1);                }                if ( ord(substr($str, $i, 1)) > 129 ) $i++;            }            if ( strlen($tmpstr) < $strlen ) $tmpstr .= "...";            return $tmpstr;    }}

截取UTF-8

<?php  
$str = "d中-在f在你是d我的国家困g在有和,人。工";  
var_dump(strcut($str,0,10));  
function strcut($str,$start,$len){  
    if($start < 0)  
        $start = strlen($str)+$start;  
      
    $retstart = $start+getOfFirstIndex($str,$start);  
  //  echo $retstart;  
    $retend = $start + $len -1 + getOfFirstIndex($str,$start + $len);  
   // echo $retend;  
    return substr($str,$retstart,$retend-$retstart+1);  
}  
//判断字符开始的位置  
function getOfFirstIndex($str,$start){  
    $char_aci = ord(substr($str,$start-1,1));  
    if(223<$char_aci && $char_aci<240)  
        return -1;  
    $char_aci = ord(substr($str,$start-2,1));  
    if(223<$char_aci && $char_aci<240)  
        return -2;  
    return 0;  
}  
?> 

截取GBK

    $tmpstr='';
            $start = $start*2;
            $len   = $len*2;
            $strlen = strlen($str);
            for ( $i = 0; $i < $strlen; $i++ ) {
                if ( $i >= $start && $i < ( $start+$len ) ) {
                    if ( ord(substr($str, $i, 1)) > 129 ) $tmpstr .= substr($str, $i, 2);
                    else $tmpstr .= substr($str, $i, 1);
                }
                if ( ord(substr($str, $i, 1)) > 129 ) $i++;
            }
            if ( strlen($tmpstr) < $strlen ) $tmpstr .= "...";
            return $tmpstr;


原创粉丝点击