最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php輕松實現(xiàn)中英文混排字符串截取

 更新時間:2014年05月28日 08:39:07   作者:  
提到中英文混排計數(shù)、截取,大家首先想到的是自己寫個截取函數(shù),這在之前的文章中我也提到過,今天我給大家分享的是php的mb擴(kuò)展,教你如何使用原生態(tài)的php函數(shù)輕松處理字符串。

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

復(fù)制代碼 代碼如下:

mb_strwidth($str, $encoding) 返回字符串的寬度
$str 要計算的字符串
$encoding 要使用的編碼,如 utf8、gbk

復(fù)制代碼 代碼如下:

mb_strimwidth($str, $start, $width, $tail, $encoding) 按寬度截取字符串
$str 要截取的字符串
$start 從哪個位置開始截取,默認(rèn)是0
$width 要截取的寬度
$tail 追加到截取字符串后邊的字符串,常用的是 ...
$encoding 要使用的編碼

 

下邊給大家實例演示:

復(fù)制代碼 代碼如下:

<?php
/**
 * 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ù)吧:

復(fù)制代碼 代碼如下:

mb_strlen($str, $encoding) 返回字符串的長度
$str 要計算的字符串
$encoding 使用的編碼

復(fù)制代碼 代碼如下:

mb_substr($str, $start, $length, $encoding) 截取字符串
$str 要截取的字符串
$start 從哪里開始截取
$length 截取多長
$encoding 使用的編碼

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

下邊上實例:

復(fù)制代碼 代碼如下:

<?php
/**
 * utf8 編碼格式
 * 1個中文占用3個字節(jié)
 */
$str = 'aa12啊aa';
echo strlen($str); // 直接輸出長度為9

// 輸出長度為7,為什么是7呢?
// 注意這里設(shè)定編碼以后,不管是中文還是英文每個長度都為1
// a a 1 2 啊 a a
// 1+1+1+1+1+1+1 = 7
// 是不是正好7個字符啊
echo mb_strlen($str, 'utf8');

// 同樣mb_substr也是一樣的
// 我現(xiàn)在只想要5個字符
echo mb_substr($str, 0, 5, 'utf8'); // 輸出 aa12啊

其實mb擴(kuò)展里邊很有很多好用的函數(shù),這里就不給大家一一列舉。

有興趣的朋友可以查看官方手冊

好了,今天就先介紹到這里了。

相關(guān)文章

最新評論

花莲市| 郴州市| 光山县| 安顺市| 彭山县| 乌兰察布市| 淮阳县| 蕲春县| 塔城市| 正镶白旗| 同心县| 乾安县| 安新县| 恩平市| 三都| 盐山县| 辉南县| 丰县| 武平县| 永靖县| 武冈市| 万宁市| 绥中县| 东兴市| 木兰县| 成都市| 高青县| 两当县| 西宁市| 尉氏县| 米易县| 仁化县| 花莲县| 古田县| 长治县| 长乐市| 瑞昌市| 南汇区| 祁阳县| 左权县| 大厂|