php輕松實現(xiàn)中英文混排字符串截取
先給大家介紹用到的函數(shù):
mb_strwidth($str, $encoding) 返回字符串的寬度
$str 要計算的字符串
$encoding 要使用的編碼,如 utf8、gbk
mb_strimwidth($str, $start, $width, $tail, $encoding) 按寬度截取字符串
$str 要截取的字符串
$start 從哪個位置開始截取,默認是0
$width 要截取的寬度
$tail 追加到截取字符串后邊的字符串,常用的是 ...
$encoding 要使用的編碼
下邊給大家實例演示:
<?php
/**
* utf8 編碼格式
* 1個中文占用3個字節(jié)
* 我們希望的是1個中文占用2個字節(jié),
* 因為從寬度上看2個英文字母占用的位置相當于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è)定編碼。
下邊上實例:
<?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擴展里邊很有很多好用的函數(shù),這里就不給大家一一列舉。
有興趣的朋友可以查看官方手冊
好了,今天就先介紹到這里了。
相關(guān)文章
php數(shù)組函數(shù)序列之a(chǎn)rray_keys() - 獲取數(shù)組鍵名
array_keys() 函數(shù)返回包含數(shù)組中所有鍵名的一個新數(shù)組。如果提供了第二個參數(shù),則只返回鍵值為該值的鍵名2011-10-10
PHP laravel使用自定義郵件類實現(xiàn)發(fā)送郵件
這篇文章主要為大家詳細介紹了PHP laravel如何通過自定義郵件類實現(xiàn)發(fā)送郵件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下2022-10-10
yii框架源碼分析之創(chuàng)建controller代碼
我們可以看到有時會使用protected目錄下的controller,有時會使用module中controller,具體是如何處理的呢,請看如下的分析2011-06-06
PHP實現(xiàn)登錄搜狐廣告獲取廣告聯(lián)盟數(shù)據(jù)的方法【附demo源碼】
這篇文章主要介紹了PHP實現(xiàn)登錄搜狐廣告獲取廣告聯(lián)盟數(shù)據(jù)的方法,涉及php基于curl的遠程數(shù)據(jù)操作相關(guān)技巧,需要的朋友可以參考下2016-10-10
一個顯示某段時間內(nèi)每個月的方法 返回由這些月份組成的數(shù)組
一個顯示某段時間內(nèi)每個月的方法 返回由這些月份組成的數(shù)組,需要的朋友可以參考下2012-05-05
PHP7創(chuàng)建COOKIE和銷毀COOKIE的實例方法
在本篇文章里小編給大家整理的是關(guān)于PHP7創(chuàng)建COOKIE和銷毀COOKIE的實例方法,有需要的朋友們可以參考下。2020-02-02

