国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

php簡簡單單搞定中英文混排字符串截取,只需2行代碼!

來源:長沙北大青鳥大計校區(qū)|發(fā)布時間:2017-07-03 09:24:36

20170520014258_30531.jpg

 先給大家介紹用到的函數(shù):

mb_strwidth($str, $encoding) 返回字符串的寬度

$str 要計算的字符串

$encoding 要使用的編碼,如 utf8、gbk

mb_strimwidth($str, $start, $width, $tail, $encoding) 按寬度截取字符串

$str 要截取的字符串

$start 從哪個位置開始截取,默認(rèn)是0

$width 要截取的寬度

$tail 追加到截取字符串后邊的字符串,常用的是 ...

$encoding 要使用的編碼

 

/
  utf8 編碼格式
  1個中文占用3個字節(jié)
  我們希望的是1個中文占用2個字節(jié),
  因為從寬度上看2個英文字母占用的位置相當(dāng)于1個中文
 /


// 測試字符串
$str = 'aaaa啊啊aaaa啊啊啊aaa';
echo strlen($str); // 只用strlen輸出為25個字節(jié)


// 必須指定編碼,不然會使用php的內(nèi)碼 mb_internal_encoding()可以查看內(nèi)碼
// 使用mb_strwidth輸出字符串的寬度為20使用utf8編碼
echo mb_strwidth($str, 'utf8'); 


// 只有寬度大于10才截取
if(mb_strwidth($str, 'utf8')>10){
    // 此處設(shè)定從0開始截取,取10個追加...,使用utf8編碼
    // 注意追加的...也會被計算到長度之內(nèi)
    $str = mb_strimwidth($str, 0, 10, '...', 'utf8');
}


// 最后輸出 aaaa啊... 4個a算4個 1個啊算2個 3個點算3個 4+2+3=9
// 是不是很簡單啊,有的人說了為什么是9個不是10個嗎?
// 因為正好“啊”的后邊還是“啊”,中文算2個,9+2=11 超出了設(shè)定,所以去掉1個就是9了
echo $str;

 

 

 

下邊再給大家介紹一些其它函數(shù)吧:

mb_strlen($str, $encoding) 返回字符串的長度

$str 要計算的字符串

$encoding 使用的編碼

mb_substr($str, $start, $length, $encoding) 截取字符串

$str 要截取的字符串

$start 從哪里開始截取

$length 截取多長

$encoding 使用的編碼

其實這2個函數(shù)和strlen()、substr()很像,唯一的不同就是可以設(shè)定編碼。

上一篇:返回列表
下一篇:提高編程技巧的十大方法程序員技術(shù)淺談

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!
赣州市| 兴隆县| 田林县| 绥德县| 岳阳市| 冷水江市| 吉安市| 平泉县| 湘西| 凌源市| 新平| 城口县| 临高县| 博兴县| 郓城县| 罗甸县| 阿克陶县| 铜陵市| 云霄县| 宿迁市| 电白县| 古蔺县| 青海省| 南召县| 晋江市| 社会| 灵宝市| 泾阳县| 成武县| 泰兴市| 独山县| 尼木县| 巴林左旗| 师宗县| 揭西县| 易门县| 安福县| 米林县| 获嘉县| 宁德市| 清苑县|