好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 網(wǎng)站建設(shè) > 建站知識 > 織夢dedecms對任意字段截取固定值并且多余部分用

織夢dedecms對任意字段截取固定值并且多余部分用

POST TIME:2017-11-12 23:52

utf8編碼下:中文占 3個字節(jié),英文和數(shù)字占 1個字節(jié)(可變編碼)(變長編碼)
gbk編碼下:所有的中文、英文、數(shù)字都占2個字節(jié)(定長編碼)
例如,有一個字符串,$str = “地方見21423435過很多苦法dsfsdfsdgsd規(guī)和地方給iu”
如果是gbk編碼:截取5個字符 ,相當(dāng)于截取10個字節(jié) substr()截取的是字節(jié)數(shù)
如果是utf8編碼的話:截取5個字符:不知道截取多少個字節(jié),因為不確定是中文還是英文
那么怎么判斷呢?
通常根據(jù)一個字符的第一個字節(jié),如果這個字節(jié) 的ASCII碼 大于224 占3個字節(jié),如果第一個字節(jié)的ASCII碼,大于192 占2個字節(jié),如果第一個字節(jié)的ASCII碼小于192,占1個字節(jié)


在include下的extend.func.php文件中加入以下函數(shù):

function GetPartStr($str,$len)//$str字符串 $len 控制長度
{
$one=0;
$partstr='';
for($i=0;$i<$len;$i++)
{ $sstr=substr($str,$one,1);
if(ord($sstr)>224){
$partstr.=substr($str,$one,3);
$one+=3;
}elseif(ord($sstr)>192){
$partstr.=substr($str,$one,2);
$one+=2;
}elseif(ord($sstr)<192){
$partstr.=substr($str,$one,1);
$one+=1;
}
}
if(strlen($str)<$one){
return $partstr;}else{
return $partstr.'....';
}
}

調(diào)用方法如下,比如要對電話號碼的一個字段進(jìn)行截取,前三位顯示,后面的用....代替,寫法:

[field:tel function=GetPartStr(@me,3)/]

此教程為跟版網(wǎng)原創(chuàng),歡迎轉(zhuǎn)載。轉(zhuǎn)載請保留版權(quán)。



上一篇:如何讓織夢{dede:channel}無子欄目不顯示同級欄目

下一篇:織夢Dedecms上傳中文文件不自動改名,保持原文件

收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266