PHP中英混合字符串截取函數(shù)代碼
更新時間:2011年07月17日 18:42:58 作者:
今天在遇到了一個中英字符串截取的問題,在gbk里中文里每個字占兩字節(jié),如果全是中文的話,用substr()函數(shù)就可以實現(xiàn)了,但中英都有的話就麻煩了,在以前收藏的代碼里找到了一個不錯的函數(shù),很好的實現(xiàn)了截取的功能
復(fù)制代碼 代碼如下:
function get_word($string, $length, $dot = '..',$charset='gbk') {
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array(' ',' ', '&', '"', '<', '>'), array('','','&', '"', '<', '>'), $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];
}
}
return $strcut.$dot;
}
$str = "歡迎 visit 簡明 nowamagic";
$str_result = get_word($str, 12);
echo $str_result;
測試運行結(jié)果:
歡迎 visit..
您可能感興趣的文章:
- php中的一個中文字符串截取函數(shù)
- 多個PHP中文字符串截取函數(shù)
- php中支持多種編碼的中文字符串截取函數(shù)!
- php字符串截取函數(shù)用法分析
- php自定義中文字符串截取函數(shù)substr_for_gb2312及substr_for_utf8示例
- PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字?jǐn)?shù)
- PHP截取漢字亂碼問題解決方法mb_substr函數(shù)的應(yīng)用
- php mb_substr()函數(shù)截取中文字符串應(yīng)用示例
- 淺析PHP substr,mb_substr以及mb_strcut的區(qū)別和用法
- php截取字符串函數(shù)substr,iconv_substr,mb_substr示例以及優(yōu)劣分析
- php字符串截取函數(shù)mb_substr用法實例分析
相關(guān)文章
php array_merge函數(shù)使用需要注意的一個問題
這篇文章主要介紹了php array_merge函數(shù)使用需要注意的一個問題,本文講解array_merge合并數(shù)組時不會合并數(shù)字鍵名的問題,大家使用時需要注意,需要的朋友可以參考下2015-03-03PHP計劃任務(wù)之關(guān)閉瀏覽器后仍然繼續(xù)執(zhí)行的函數(shù)
通過使用ignore_user_abort函數(shù)的特性,實現(xiàn)PHP計劃任務(wù),需要的朋友可以參考下。2010-07-07安裝PHP可能遇到的問題“無法載入mysql擴展” 的解決方法
安裝PHP可能遇到的問題“無法載入mysql擴展” 的解決方法...2007-04-04php 自定義函數(shù)實現(xiàn)將數(shù)據(jù) 以excel 表格形式導(dǎo)出示例
這篇文章主要介紹了php 自定義函數(shù)實現(xiàn)將數(shù)據(jù) 以excel 表格形式導(dǎo)出,結(jié)合實例形式分析了PHP操作二維數(shù)組的遍歷與Excel格式輸出相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-11-11關(guān)于Sphinx創(chuàng)建全文檢索的索引介紹
本篇文章是對使用Sphinx創(chuàng)建全文檢索的索引進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06