標籤 擷取 下的所有文章

[PHP] substr 字串擷取 (擷取字串中指定位置、長度的部分)

substr()

在一段字串中,擷取指定的位置以及指定的長度。


使用方式:

substr ( 字串, 起始位置, 長度 )

字串:在第一個值為輸入一個原始的字串。

起始位置:設定要開始擷取的位置,也就是從頭開始計算第幾位數。

長度:要擷取多少的長度

起始位置 與 長度 必須要是整數值,其中長度可以是正數或是負數,如果設定為負數則代表說擷取至該字串的倒數第幾個位數。

 

當只有設定 起始位置 且沒有設定 長度 時,會擷取該位置以後的所有字串,例如:

$text = "RicharLin";
echo substr($text, 3); //輸出 harLin
echo substr($text, -3); //輸出 Lin   (由倒數第三位數開始擷取)

 

當 起始位置 與 長度 都有設定時,若長度為負數則代表長度擷取到字串結束前第n位,例如:

$text = "RicharLin";
echo substr($text, 0); //輸出 RicharLin
echo substr($text, 0, 6); //輸出 Richar
echo substr($text, 0, -3); //輸出 Richar
echo substr($text, 4); //輸出 arLin
echo substr($text, 4, 2); //輸出 ar  (由第四位起,擷取兩位數)
echo substr($text, 4, -3); //輸出 ar (由第四位起,擷取至字串結尾前三位數)
echo substr($text, -7); //輸出 charLin (由倒數第七位起擷取全部)
echo substr($text, -7, 4); //輸出 char (由倒數第七位起擷取四位數)
echo substr($text, -7, -3); //輸出 char (由倒數第七位起擷取至倒數第三位);

實際使用範例:

情境:多筆資訊必須存在同一個字串之中。
例如:「座號_性別」

$Array_Data = array("001_F","002_F","003_M","004_M","005_F");

for($i=0;$i<count($Array_Data);$i++){
  $number = substr($Array_Data[$i], 0, 3);
  $gender = substr($Array_Data[$i], -1);
  echo "座號:".$number." / 性別:".$gender." <BR>";
}

輸出結果為:

座號:001 / 性別:F 
座號:002 / 性別:F 
座號:003 / 性別:M 
座號:004 / 性別:M 
座號:005 / 性別:F