国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > PhpCMS > 正文

Phpcms V9截取字符函數(shù)改進(jìn):截取英文更精確

2024-07-09 22:53:25
字體:
供稿:網(wǎng)友

最近忙于項目,分享的時間就少了,自上次發(fā)布“Phpcms V9內(nèi)容頁show模板調(diào)用標(biāo)簽解讀”又已半月!在最近的項目中,發(fā)現(xiàn)官方最新版PHPCMS V9.3.1 正式版已經(jīng)有日語的語言包,說明了PC的一個動向:國際化趨向。不過日語這個語言包還只是預(yù)覽,沒有日化到位。

今天在這里分享最近在英文網(wǎng)站中優(yōu)化的一個小改進(jìn):Phpcms V9截取字符函數(shù)改進(jìn):截取英文更精確,具體方法來自PC官方論壇,分享在此。

官方默認(rèn)的str_cut()截取的字符統(tǒng)計長度不精準(zhǔn),特別是在中英文字符混搭的時候,調(diào)用列表會出現(xiàn)問題,采用【拽拽焱】分享的方法,可以將長度偏差在2個字符內(nèi),很不錯,先贊一個!

具體代碼:

 

/**
 * 字符截取 支持UTF8/GBK m.survivalescaperooms.com
 * @param $string
 * @param $length
 * @param $dot
 */
function str_cut($string, $length, $dot = '') {
        $strlen = strlen($string);
        if($strlen/2 <= $length) return $string;
        $string = str_replace(array(' ','        ',' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array(' ',' ',' ',' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string);
        $strcut = '';
        $n = $tn = $noc = 0;
        if(strtolower(CHARSET) == 'utf-8') {
                while($n < $strlen) {
                        $t = ord($string[$n]);
                        if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
                                $tn = 1; ++$n; $noc += 0.5;
                        } elseif(194 <= $t && $t <= 223) {
                                $tn = 2; $n += 2; $noc += 1;
                        } elseif(224 <= $t && $t <= 239) {
                                $tn = 3; $n += 3; $noc += 1;
                        } elseif(240 <= $t && $t <= 247) {
                                $tn = 4; $n += 4; $noc += 1;
                        } elseif(248 <= $t && $t <= 251) {
                                $tn = 5; $n += 5; $noc += 1;
                        } elseif($t == 252 || $t == 253) {
                                $tn = 6; $n += 6; $noc += 1;
                        } else {
                                ++$n;
                        }
                        if($noc >= $length) {
                                if($n < $strlen) ++$noc;
                                break;
                        }
                }
        } else {                
                while($n < $strlen) {
                        if(ord($string[$n]) > 127) {
                                $tn = 2; $n += 2; $noc += 1;
                        } else{
                                $tn = 1; ++$n; $noc += 0.5;
                        }
                        if($noc >= $length) {
                                if($n < $strlen) ++$noc;
                                break;
                        }
                }
        }
        if($noc > $length && !empty($dot)) {
                $n -= $tn;
                $strcut = substr($string, 0, $n);
                $strcut .= $dot;
        }else{
                $strcut = substr($string, 0, $n);
        }        
        $strcut = str_replace(array('&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), array('&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);
        return $strcut;
}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金湖县| 长丰县| 金乡县| 晋宁县| 泽库县| 小金县| 农安县| 苗栗市| 潍坊市| 苍梧县| 南漳县| 阳泉市| 巴东县| SHOW| 湘潭县| 利津县| 色达县| 海林市| 祥云县| 普兰县| 运城市| 莱西市| 石门县| 桐梓县| 和林格尔县| 太仆寺旗| 石首市| 会同县| 满洲里市| 黑山县| 鲁甸县| 密云县| 万山特区| 什邡市| 会昌县| 阿克陶县| 军事| 满城县| 亚东县| 清远市| 湘西|