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

來源:互聯網
上載者:User

提到中英文混排計數、截取,大家首先想到的是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 要使用的編碼

下邊給大家執行個體示範:

  1. /**
  2. * utf8 編碼格式
  3. * 1個中文佔用3個位元組
  4. * 我們希望的是1個中文佔用2個位元組,
  5. * 因為從寬度上看2個英文字母佔用的位置相當於1個中文
  6. */
  7. // 測試字串
  8. $str = 'aaaa啊啊aaaa啊啊啊aaa';
  9. echo strlen($str); // 只用strlen輸出為25個位元組
  10. // 必須指定編碼,不然會使用php的內碼 mb_internal_encoding()可以查看內碼
  11. // 使用mb_strwidth輸出字串的寬度為20使用utf8編碼
  12. echo mb_strwidth($str, 'utf8');
  13. // 只有寬度大於10才截取
  14. if(mb_strwidth($str, 'utf8')>10){
  15. // 此處設定從0開始截取,取10個追加...,使用utf8編碼
  16. // 注意追加的...也會被計算到長度之內
  17. $str = mb_strimwidth($str, 0, 10, '...', 'utf8');
  18. }
  19. // 最後輸出 aaaa啊... 4個a算4個 1個啊算2個 3個點算3個 4+2+3=9
  20. // 是不是很簡單啊,有的人說了為什麼是9個不是10個嗎?
  21. // 因為正好“啊”的後邊還是“啊”,中文算2個,9+2=11 超出了設定,所以去掉1個就是9了
  22. echo $str;
複製代碼

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

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

$str 要計算的字串

$encoding 使用的編碼

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

$str 要截取的字串

$start 從哪裡開始截取

$length 截取多長

$encoding 使用的編碼

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

下邊上執行個體:

  1. /**
  2. * utf8 編碼格式
  3. * 1個中文佔用3個位元組
  4. */
  5. $str = 'aa12啊aa';
  6. echo strlen($str); // 直接輸出長度為9
  7. // 輸出長度為7,為什麼是7呢?
  8. // 注意這裡設定編碼以後,不管是中文還是英文每個長度都為1
  9. // a a 1 2 啊 a a
  10. // 1+1+1+1+1+1+1 = 7
  11. // 是不是正好7個字元啊
  12. echo mb_strlen($str, 'utf8');
  13. // 同樣mb_substr也是一樣的
  14. // 我現在只想要5個字元
  15. echo mb_substr($str, 0, 5, 'utf8'); // 輸出 aa12啊
複製代碼

其實mb擴充裡邊很有很多好用的函數,這裡就不給大家一一列舉。

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

http://www.php.net/manual/zh/ref.mbstring.php

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.