PHP針對中英文混合字符串長度判斷及截取方法示例
本文實(shí)例講述了PHP針對中英文混合字符串長度判斷及截取方法。分享給大家供大家參考,具體如下:
/**
*
* 中英混合字符串長度判斷
* @param unknown_type $str
* @param unknown_type $charset
*/
function strLength($str, $charset = 'utf-8') {
if ($charset == 'utf-8')
$str = iconv ( 'utf-8', 'gb2312', $str );
$num = strlen ( $str );
$cnNum = 0;
for($i = 0; $i < $num; $i ++) {
if (ord ( substr ( $str, $i + 1, 1 ) ) > 127) {
$cnNum ++;
$i ++;
}
}
$enNum = $num - ($cnNum * 2);
$number = ($enNum / 2) + $cnNum;
return ceil ( $number );
}
/**
*
* 中英混合的字符串截取
* @param unknown_type $sourcestr
* @param unknown_type $cutlength
*/
function cut_str($sourcestr, $cutlength) {
$returnstr = '';
$i = 0;
$n = 0;
$str_length = strlen ( $sourcestr ); //字符串的字節(jié)數(shù)
while ( ($n < $cutlength) and ($i <= $str_length) ) {
$temp_str = substr ( $sourcestr, $i, 1 );
$ascnum = Ord ( $temp_str ); //得到字符串中第$i位字符的ascii碼
if ($ascnum >= 224) //如果ASCII位高與224,
{
$returnstr = $returnstr . substr ( $sourcestr, $i, 3 ); //根據(jù)UTF-8編碼規(guī)范,將3個連續(xù)的字符計(jì)為單個字符
$i = $i + 3; //實(shí)際Byte計(jì)為3
$n ++; //字串長度計(jì)1
} elseif ($ascnum >= 192) //如果ASCII位高與192,
{
$returnstr = $returnstr . substr ( $sourcestr, $i, 2 ); //根據(jù)UTF-8編碼規(guī)范,將2個連續(xù)的字符計(jì)為單個字符
$i = $i + 2; //實(shí)際Byte計(jì)為2
$n ++; //字串長度計(jì)1
} elseif ($ascnum >= 65 && $ascnum <= 90) //如果是大寫字母,
{
$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
$i = $i + 1; //實(shí)際的Byte數(shù)仍計(jì)1個
$n ++; //但考慮整體美觀,大寫字母計(jì)成一個高位字符
} else //其他情況下,包括小寫字母和半角標(biāo)點(diǎn)符號,
{
$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
$i = $i + 1; //實(shí)際的Byte數(shù)計(jì)1個
$n = $n + 0.5; //小寫字母和半角標(biāo)點(diǎn)等與半個高位字符寬...
}
}
if ($str_length > $cutlength) {
$returnstr = $returnstr . "..."; //超過長度時在尾處加上省略號
}
return $returnstr;
}
PS:這里再為大家推薦幾款在線字符統(tǒng)計(jì)工具供大家參考:
在線字?jǐn)?shù)統(tǒng)計(jì)工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計(jì)與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php+mysql數(shù)據(jù)庫實(shí)現(xiàn)無限分類的方法
這篇文章主要介紹了php+mysql數(shù)據(jù)庫實(shí)現(xiàn)無限分類的方法,包含完整的節(jié)點(diǎn)操作技巧以及相應(yīng)的應(yīng)用方法實(shí)例,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
php實(shí)現(xiàn)的中秋博餅游戲之繪制骰子圖案功能示例
這篇文章主要介紹了php實(shí)現(xiàn)的中秋博餅游戲之繪制骰子圖案功能,涉及php圖形繪制中位置、顏色、形狀等相關(guān)屬性設(shè)置操作技巧,需要的朋友可以參考下2017-11-11
php禁用cookie后session設(shè)置方法分析
這篇文章主要介紹了php禁用cookie后session設(shè)置方法,分析了php相關(guān)配置文件的功能與設(shè)置方法,具有一定參考借鑒價值,需要的朋友可以參考下2016-10-10
PHP與javascript實(shí)現(xiàn)變量交互的示例代碼
以下是對PHP和javascript實(shí)現(xiàn)變量交互的一個實(shí)例進(jìn)行了詳細(xì)的介紹。需要的朋友可以過來參考下2013-07-07

