php:根據中文裁減字串函數方法

來源:互聯網
上載者:User
define(CHARSET, 'UTF-8'); // 系統預設編碼    /**  * 根據中文裁減字串  * @param $string - 字串  * @param $length - 長度  * @param $doc - 縮減尾碼  * @return 返回帶省略符號被裁減好的字串  */  function cutstr( $string, $length, $dot = '...' ) {      if ( strlen( $string ) <= $length ) {          return $string;      }      $pre = chr( 1 );      $end = chr( 1 );      $string = str_replace( array( '&', '"', '<', '>' ), array( $pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end ), $string );      $strcut = '';      if ( strtolower( CHARSET ) == 'utf-8' ) {          $n = $tn = $noc = 0;          while ( $n < strlen( $string ) ) {              $t = ord( $string[$n] );              if ( $t == 9 $t == 10 (32 <= $t && $t <= 126) ) {                  $tn = 1;                  $n++;                  $noc++;              } elseif ( 194 <= $t && $t <= 223 ) {                  $tn = 2;                  $n += 2;                  $noc += 2;              } elseif ( 224 <= $t && $t <= 239 ) {                  $tn = 3;                  $n += 3;                  $noc += 2;              } elseif ( 240 <= $t && $t <= 247 ) {                  $tn = 4;                  $n += 4;                  $noc += 2;              } elseif ( 248 <= $t && $t <= 251 ) {                  $tn = 5;                  $n += 5;                  $noc += 2;              } elseif ( $t == 252 $t == 253 ) {                  $tn = 6;                  $n += 6;                  $noc += 2;              } else {                  $n++;              }              if ( $noc >= $length ) {                  break;              }          }          if ( $noc > $length ) {              $n -= $tn;          }          $strcut = substr( $string, 0, $n );      } else {          for ( $i = 0; $i < $length; $i++ ) {              $strcut .= ord( $string[$i] ) > 127 ? $string[$i] . $string[++$i] : $string[$i];          }      }      $strcut = str_replace( array( $pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end ), array( '&', '"', '<', '>' ), $strcut );      $pos = strrpos( $strcut, chr( 1 ) );      if ( $pos !== false ) {          $strcut = substr( $strcut, 0, $pos );      }      return $strcut . $dot;  }  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.