截取中文字符串PHP代碼

w43m 9年前發布 | 909 次閱讀 PHP

/*

  • 中文字符串截取
  • @param string $string
  • @param int $sublen
  • @param int $start
  • @param string $code */ function substr_zh ( $string, $sublen, $start = 0, $code = 'UTF-8' ) { if ( $code == 'UTF-8' ) {

      $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
      preg_match_all ( $pa, $string, $t_string );
    
      if ( count ( $t_string[0] ) - $start > $sublen ) return join ( '', array_slice ( $t_string[0], $start, $sublen ) ) . "...";
      return join ( '', array_slice ( $t_string[0], $start, $sublen ) );
    

    } else {

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

    } }</pre>

 本文由用戶 w43m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!