程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 實現中英文混排字符串截取的php代碼

實現中英文混排字符串截取的php代碼

編輯:PHP綜合

提到中英文混排計數、截取,大家首先想到的是ascii、16進制、正則匹配、循環計數。

今天我給大家分享的是php的mb擴展,教你如何輕松處理字符串。

先給大家介紹用到的函數:

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個字節
 * 我們希望的是1個中文占用2個字節,
 * 因為從寬度上看2個英文字母占用的位置相當於1個中文
 */
    
// 測試字符串
$str = 'aaaa啊啊aaaa啊啊啊aaa';
echo strlen($str); // 只用strlen輸出為25個字節
    
// 必須指定編碼,不然會使用php的內碼 mb_internal_encoding()可以查看內碼
// 使用mb_strwidth輸出字符串的寬度為20使用utf8編碼
echo mb_strwidth($str, 'utf8'); 
    
// 只有寬度大於10才截取
if(mb_strwidth($str, 'utf8')>10){
    // 此處設定從0開始截取,取10個追加...,使用utf8編碼
    // 注意追加的...也會被計算到長度之內
    $str = mb_strimwidth($str, 0, 10, '...', 'utf8');
}
    
// 最後輸出 aaaa啊... 4個a算4個 1個啊算2個 3個點算3個 4+2+3=9
// 查看本欄目
		
							
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved