---
# System prepended metadata

title: 2022.4.18 常用字串函式 substr / mb_substr
tags: [字串, PHP, substr, mb_substr]

---

###### tags: `PHP` `字串` `substr` `mb_substr`

# 2022.4.18 常用字串函式 substr / mb_substr

- substr 
用於英文系統單字元字串,因減少判斷英文之外的語言,
在單只有英文使用者的情況下,選用此字集效能會更佳

一個中文字算三個字元,當字元不夠顯示完整的中文字時,產生亂碼並無法顯示後面的部分
*例:

     $str="今天本地確診三千例" ;
     
     $sub=substr($str,2,4) ;
     
     echo $sub ;

字元的值 第一個數為開始的數,第二個為顯示的字元數量
這個例子為 2,4
因為第一個值從2開始,所以"今"字的前兩個字元未顯示 ,第三個字元顯示在"今"裡面
所以"今"需要三個字元才能正確顯示 ,但因為只有一個字元所以顯示為亂碼
4減掉1剩下3個字元 , "天"剛好使用完剩下的3個字元 ,所以可以正確顯示出"天"

這個例子會顯示出 " ? 天 "

---

- mb_substr (**m**ultiple **b**yte)
用於多語系,多字元字集,可以正確顯示英文之外的文字

就算中英混雜 ,也可以一個字元對應一個字來正確顯示
*例:

   ```
   $str="今天本地確診三千例" ;

   $sub=mb_substr($str,2,4) ;

   echo $sub ;
```

同樣的例子 ,因從2開始所以不顯示 " 今天 " ,顯示4個字為 " 本地確診 "
為了避免之後更新時需要添加其它語言而產生的麻煩,通常建議用 mb_substr 

---
