PHP針對(duì)中英文混合字符串長度判斷及截取方法示例
本文實(shí)例講述了PHP針對(duì)中英文混合字符串長度判斷及截取方法。分享給大家供大家參考,具體如下:
/** * * 中英混合字符串長度判斷 * @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個(gè)連續(xù)的字符計(jì)為單個(gè)字符 $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個(gè)連續(xù)的字符計(jì)為單個(gè)字符 $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個(gè) $n ++; //但考慮整體美觀,大寫字母計(jì)成一個(gè)高位字符 } else //其他情況下,包括小寫字母和半角標(biāo)點(diǎn)符號(hào), { $returnstr = $returnstr . substr ( $sourcestr, $i, 1 ); $i = $i + 1; //實(shí)際的Byte數(shù)計(jì)1個(gè) $n = $n + 0.5; //小寫字母和半角標(biāo)點(diǎn)等與半個(gè)高位字符寬... } } if ($str_length > $cutlength) { $returnstr = $returnstr . "..."; //超過長度時(shí)在尾處加上省略號(hào) } 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ù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解PHP中數(shù)組函數(shù)的知識(shí)點(diǎn)
PHP 的數(shù)組是一種很強(qiáng)大的數(shù)據(jù)類型,與此同時(shí) PHP 內(nèi)置了一系列與數(shù)組相關(guān)的函數(shù)可以很輕易的實(shí)現(xiàn)日常開發(fā)的功能。所以本文便總結(jié)了一些在常見場景中利用 PHP 內(nèi)置函數(shù)的實(shí)現(xiàn)方法,希望對(duì)你有所幫助2022-11-11PHP實(shí)現(xiàn)排序堆排序(Heap Sort)算法
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)排序堆排序(Heap Sort)算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01