您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 临汾分类信息网,免费分类信息发布

PHP截取字符串长度(中英文混合字符串)_PHP教程

2026/2/2 22:26:08发布3次查看
文章介绍了字符串截取函数从php自带的截取函数到最后支持中文,英文和中英文混合字符串截取方法介绍,有需要的朋友可参考一下。
取部份字符串。
语法: string substr(string string, int start, int [length]);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若 start 为负数,则从字符串尾端算起。若可省略的参数 length 存在,但为负数,则表示取到倒数第 length 个字符。
使用范例
 代码如下 复制代码
echo substr(abcdef, 1, 3);  // 返回 bcd
echo substr(abcdef, -2);    // 返回 ef
echo substr(abcdef, -3, 1); // 返回 d
echo substr(abcdef, 1, -1); // 返回 bcde
?>
上面只支持英文不支持中文
截取gb2312中文字符串
 代码如下 复制代码
 //截取中文字符串
 function mysubstr($str, $start, $len) {
     $tmpstr = ;
     $strlen = $start + $len;
     for($i = 0; $i          if(ord(substr($str, $i, 1)) > 0xa0) {
             $tmpstr .= substr($str, $i, 2);
             $i++;
         } else
             $tmpstr .= substr($str, $i, 1);
     }
     return $tmpstr;
 }
 ?>
截取utf8编码的多字节字符串
 代码如下 复制代码
 //截取utf8字符串
 function utf8substr($str, $from, $len)
 {
     return preg_replace('#^(?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$from.'}'.
                        '((?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$len.'}).*#s',
                        '$1',$str);
 }
 ?>
/*
    * 功能: 作用跟substr一样,除了它不会造成乱码
    * 参数:
    * 返回:
    */
代码如下 复制代码
   function utf8_substr( $str , $start , $length=null ){
// 先正常截取一遍.
        $res = substr( $str , $start , $length );
        $strlen = strlen( $str );
/* 接着判断头尾各6字节是否完整(不残缺) */
        // 如果参数start是正数
        if ( $start >= 0 ){
            // 往前再截取大约6字节
            $next_start = $start + $length; // 初始位置
            $next_len = $next_start + 6             $next_segm = substr( $str , $next_start , $next_len );
            // 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节
            $prev_start = $start - 6 > 0 ? $start - 6 : 0;
            $prev_segm = substr( $str , $prev_start , $start - $prev_start );
        }
        // start是负数
        else{
            // 往前再截取大约6字节
            $next_start = $strlen + $start + $length; // 初始位置
            $next_len = $next_start + 6             $next_segm = substr( $str , $next_start , $next_len );
// 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节.
            $start = $strlen + $start;
            $prev_start = $start - 6 > 0 ? $start - 6 : 0;
            $prev_segm = substr( $str , $prev_start , $start - $prev_start );
        }
        // 判断前6字节是否符合utf8规则
        if ( preg_match( '@^([x80-xbf]{0,5})[xc0-xfd]?@' , $next_segm , $bytes ) ){
            if ( !empty( $bytes[1] ) ){
                $bytes = $bytes[1];
                $res .= $bytes;
            }
        }
        // 判断后6字节是否符合utf8规则
        $ord0 = ord( $res[0] );
        if ( 128 = $ord0 ){
            // 往后截取 , 并加在res的前面.
            if ( preg_match( '@[xc0-xfd][x80-xbf]{0,5}$@' , $prev_segm , $bytes ) ){
                if ( !empty( $bytes[0] ) ){
                    $bytes = $bytes[0];
                    $res = $bytes . $res;
                }
            }
        }
        return $res;
    }
测试数据::
 代码如下 复制代码
= $length) {
    break;
   }
  }
  if($noc > $length) {
   $n -= $tn;
  }
  $strcut = substr($string, 0, $n);
 } else {
  for($i = 0; $i    $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
  }
 }
 //$strcut = str_replace(array('&', '', ''), array('&', '', '<', '>'), $strcut);
 return $strcut.$dot;
}
http://www.bkjia.com/phpjc/631589.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/631589.htmltecharticle文章介绍了字符串截取函数从php自带的截取函数到最后支持中文,英文和中英文混合字符串截取方法介绍,有需要的朋友可参考一下。 取部...
临汾分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product