根據(jù)中文裁減字符串函數(shù)的php代碼
更新時間:2013年12月03日 17:46:26 作者:
裁減字符串函數(shù)有很多,但是根據(jù)中文裁減字符串的卻很少,在本文將為大家介紹下使用php是如何實現(xiàn)的,感興趣的朋友不要錯過
復(fù)制代碼 代碼如下:
define(CHARSET, 'UTF-8'); // 系統(tǒng)默認編碼
/**
* 根據(jù)中文裁減字符串
* @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;
}
您可能感興趣的文章:
- php截取字符串之截取utf8或gbk編碼的中英文字符串示例
- php中3種方法刪除字符串中間的空格
- php通過字符串調(diào)用函數(shù)示例
- PHP 字符串長度判斷效率更高的方法
- php判斷字符串在另一個字符串位置的方法
- PHP字符串中特殊符號的過濾方法介紹
- php二維數(shù)組轉(zhuǎn)成字符串示例
- php 判斷字符串中是否包含html標簽
- php去除字符串換行符示例分享
- PHP字符串的遞增和遞減示例介紹
- php中利用explode函數(shù)分割字符串到數(shù)組
- PHP preg_replace() 正則替換所有符合條件的字符串
- php 字符串壓縮方法比較示例
- PHP字符串的連接的簡單實例
- php截取中文字符串不亂碼的方法
- 生成隨機字符串和驗證碼的類的PHP實例
- 多個PHP中文字符串截取函數(shù)
- 支持中文和其他編碼的php截取字符串函數(shù)分享(截取中文字符串)
相關(guān)文章
php使用json-schema模塊實現(xiàn)json校驗示例
這篇文章主要介紹了php使用json-schema模塊實現(xiàn)json校驗,結(jié)合實例形式分析了json-schema模塊的安裝及使用json-schema模塊進行json校驗的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09php反射學(xué)習(xí)之不用new方法實例化類操作示例
這篇文章主要介紹了php反射學(xué)習(xí)之不用new方法實例化類操作,結(jié)合實例形式進一步分析了php基于反射不用new方法進行實例化類的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06解析PHP留言本模塊主要功能的函數(shù)說明(代碼可實現(xiàn))
本篇文章是對PHP留言本中主要的函數(shù)以及代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06