---
# System prepended metadata

title: 2022.4.22 字串常用函式
tags: [字串, PHP, string]

---

###### tags: `PHP` `string` `字串`
# 2022.4.22 字串常用函式



# substr() / mb_subster() -從元字串中取出部分字串
- substr 
用於英文系統單字元字串,因減少判斷英文之外的語言,
在單只有英文使用者的情況下,選用此字集效能會更佳

一個中文字算三個字元,當字元不夠顯示完整的中文字時,產生亂碼並無法顯示後面的部分
<pre>
     $str="今天本地確診三千例" ;
     
     在<font color=#731919>substr</font>中,<font color=#A559F9>第一個數為開始的數</font>,<font color=#197334>第二個為顯示的字元數量</font> 
     $sub=<font color=#731919>substr(</font>$str,<font color=#A559F9>2</font>,<font color=#197334>4</font><font color=#731919>)</font> ;
     
     echo $sub ;
</pre>

顯示出 " ? 天 "

這個例子為 2,4 作為值
因為第一個值從2字元開始, 所以"今"字的前兩個字元未納入 ,第三個字元顯示在"今"裡面
所以"今"只獲得了1/3個字元而無法正確顯示 ,

4減掉"今"用掉的1個字元
剩下3個字元 , "天"剛好使用完剩下的3個字元 ,所以可以正確顯示出"天"



---

- mb_substr (**multiple byte**)

用於多語系,多字元字集,可以正確顯示英文之外的文字
就算中英混雜 ,也可以一個字元對應一個字來正確顯示

   <pre>
   在字數上 索引是由0開始做為第一個字
          0 1 2 34 5 6 7 8
   $ str="今天本地確診三千例" ;

   在<font color=#731919>mb_substr</font>中,<font color=#A559F9>第一個數為開始的數</font>,<font color=#197334>第二個為顯示的字元數量</font> 
   $sub=<font color=#731919>mb_substr(</font>$str,<font color=#A559F9>2</font>,<font color=#197334>4</font><font color=#731919>)</font>
   
   echo $sub ;
   
   </pre>

顯示出 "本地確診"

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


---

# trim() -去除頭尾空白
    去除頭尾空白的用意是避免輸入文字不小心按到空白, 
    有時候資料庫不允許空白存在, 所以可以用trim去除空白

# str_repeat() -重複特定字元

---

# str_replace() -取代字串
  
先設定一個密碼為 變數
<pre>
 $ password="aaddw1123";

   在<font color=#731919>str_repeat</font>中,<font color=#A559F9>第一個值為替換的符號</font>,<font color=#197334>第二個值為要被替換的內容</font>
 $ password=<font color=#731919>str_repeat (</font> <font color=#A559F9>" * "</font> , <font color=#197334>mb_strlen ( $password )</font> <font color=#731919>)</font>;
 
   也可以拆成兩段編寫
 $ strlen=mb_strlen($password);
 $ password=<font color=#731919>str_repeat (</font><font color=#A559F9>"*"</font>,<font color=#197334>$strlen</font><font color=#731919>)</font>;

   echo $password;
   
   
   </pre>
顯示出 *********
  
---

# explode() -"以"特定字串/字元/符號 分割字串 
  -爆炸!!-
  *例: " 我-很-好 " 可以設定以 "-" 設為引信把 "我 很 好" 三個字炸開,
  獲得一個陣列=>[我,很,好] 
  
  先設定一個字串為 變數
  
  <pre>
  $ str="this,is,a,book";
  
    在<font color=#731919>explode</font>中,<font color=#A559F9>第一個值為引信</font>,<font color=#197334>第二個值為要炸成陣列的變數</font>
  $ array=<font color=#731919>explode(</font><font color=#A559F9>","</font>,<font color=#197334>$str</font><font color=#731919>)</font>;
  
  print_r($array);
  
  
  </pre>
  顯示出 Array ( [0] => this [1] => is [2] => a [3] => book )
  
---

# impolode() / join() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -以特定字串/字元/符號將陣列元素合併成字串
  -聚合-
  設定特殊符號 ,將陣列中的元素 合併成字串 和上面的explode是相反的功能
  *例: 陣列 [我,-,很,-,好]
    將 "-" 設為聚合符號, 獲得 "我很好" 的字串
    
  這裡先使用上面的explode作為例子 
  <pre>  
  $ str="this,is,a,book"
  <font color=#197334>$ array</font>=expolde(",",$ str);
  print_r(<font color=#197334>$array</font>);
  </pre>
  顯示出 Array ( [0] => this [1] => is [2] => a [3] => book )
  然後
  <pre>
    在<font color=#731919>join</font>的<font color=#A559F9>第一個值為合併元素</font>,<font color=#197334>第二個值為合併內容</font>
  $ newstr=<font color=#731919>join(</font><font color=#A559F9>" "</font>,<font color=#197334>$array</font><font color=#731919>)</font>;
  echo $newstr;
  </pre>
  顯示出 this is a book
    
---

# strpos() -返回某字元在字串首次出現的位置
  string position (字串的位置)
  
  ~~等同PHP的 sort( [ ] )功能~~
  
  <pre>
  $str="網頁設計範例教本第五版";
  
  在<font color=#731919>strpos</font>的,<font color=#A559F9>第一個值為要放入的字串</font>,<font color=#197334>第二個值為開始的位置</font>(取用第一個字)
  $pos=<font color=#731919>mb_strpos(</font><font color=#A559F9>$str</font>,<font color=#197334>"範例教本"</font><font color=#731919>)</font>;
  
  $str=mb_substr($str,0,$pos);
  
  echo $str ;
  
  </pre>
  
  顯示出 網頁設計
    這裡取用 "範例教本" 作為字串首次位置, 不顯示 "範例教本" 後面的 "第五版" 字串
  
# strlen() / mb_strlen() -字串長度
  計算字串長度
  
# 字串函式整合應用---改變句子中特定的文字形式 顏色 應用 練習


<pre>

$ str="學會PHP網頁程式設計，薪水會加倍，工作更好找";

$ search="薪水";
$ pos=mb_strpos($str,$search);
$ head=mb_substr($str,0,$pos);
$ tail=mb_substr($str,$pos+mb_strlen($search));

$ str=$head
    . "< span style='font-size:2rem;color:red'>" 
    . $search
    . "< /span>"
    . $tail ;

echo $str;

</pre>


