根據(jù)中文裁減字符串函數(shù)的php代碼
更新時(shí)間:2013年12月03日 17:46:26 作者:
裁減字符串函數(shù)有很多,但是根據(jù)中文裁減字符串的卻很少,在本文將為大家介紹下使用php是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過(guò)
復(fù)制代碼 代碼如下:
define(CHARSET, 'UTF-8'); // 系統(tǒng)默認(rèn)編碼
/**
* 根據(jù)中文裁減字符串
* @param $string - 字符串
* @param $length - 長(zhǎng)度
* @param $doc - 縮略后綴
* @return 返回帶省略號(hào)被裁減好的字符串
*/
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通過(guò)字符串調(diào)用函數(shù)示例
- PHP 字符串長(zhǎng)度判斷效率更高的方法
- php判斷字符串在另一個(gè)字符串位置的方法
- PHP字符串中特殊符號(hào)的過(guò)濾方法介紹
- php二維數(shù)組轉(zhuǎn)成字符串示例
- php 判斷字符串中是否包含html標(biāo)簽
- php去除字符串換行符示例分享
- PHP字符串的遞增和遞減示例介紹
- php中利用explode函數(shù)分割字符串到數(shù)組
- PHP preg_replace() 正則替換所有符合條件的字符串
- php 字符串壓縮方法比較示例
- PHP字符串的連接的簡(jiǎn)單實(shí)例
- php截取中文字符串不亂碼的方法
- 生成隨機(jī)字符串和驗(yàn)證碼的類(lèi)的PHP實(shí)例
- 多個(gè)PHP中文字符串截取函數(shù)
- 支持中文和其他編碼的php截取字符串函數(shù)分享(截取中文字符串)
相關(guān)文章
基于PHP實(shí)現(xiàn)端口批量查詢(xún)工具
這篇文章主要為大家詳細(xì)介紹了如何基于PHP實(shí)現(xiàn)端口批量查詢(xún)工具,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解一下2024-03-03php使用json-schema模塊實(shí)現(xiàn)json校驗(yàn)示例
這篇文章主要介紹了php使用json-schema模塊實(shí)現(xiàn)json校驗(yàn),結(jié)合實(shí)例形式分析了json-schema模塊的安裝及使用json-schema模塊進(jìn)行json校驗(yàn)的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09php反射學(xué)習(xí)之不用new方法實(shí)例化類(lèi)操作示例
這篇文章主要介紹了php反射學(xué)習(xí)之不用new方法實(shí)例化類(lèi)操作,結(jié)合實(shí)例形式進(jìn)一步分析了php基于反射不用new方法進(jìn)行實(shí)例化類(lèi)的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06微信公眾號(hào)點(diǎn)擊菜單即可打開(kāi)并登錄微站的實(shí)現(xiàn)方法
這篇文章主要介紹了微信公眾號(hào)點(diǎn)擊菜單即可打開(kāi)并登錄微站的實(shí)現(xiàn)方法,以實(shí)例形式對(duì)回調(diào)、菜單及參數(shù)的處理等具體實(shí)現(xiàn)步驟與功能代碼都做了較為詳細(xì)的描述,對(duì)于微信公眾號(hào)的開(kāi)發(fā)來(lái)說(shuō)具有很好的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11解析PHP留言本模塊主要功能的函數(shù)說(shuō)明(代碼可實(shí)現(xiàn))
本篇文章是對(duì)PHP留言本中主要的函數(shù)以及代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06