PHP 如何進行字串切割

PHP 如何進行字串切割

為何需要字串切割

我們在串接 API 時需要將取回的資料進行處理,不過各家廠商開出來的規格都不一定,如果是丟回 JSON 格式還好處理,只需要使用 json_decode 就直接將資料轉成 物件(object) 或是 陣列(array) 可是如果運氣不好一點,回傳回來的資料可能就是純粹的陣列帶字串,看到這種也只能硬著頭皮硬幹下去了,廠商總不可能為了你一個人去改功能吧。

JSON: JavaScript Object Notation. 是一種純粹的文字資料交換格式。

範例

那麼這個時候我們就只需要使用 PHP explode 這個 function 就好了,那麼廢話不多說直接上程式碼。

以下式範例的 code

<?php
$ugly_string='status=1</br>desc=Succeeded</br>rvg2c=1</br>dcvc=4989</br>smilepayno=1_2_1_6374720</br>data_id=2017010218171637</br>amount=69</br>atmbankno=004</br>atmno=3721477005374720</br>payenddate=2017/1/5 23:59:59';
$messages=explode("</br>",$ugly_string);
foreach ($messages as $message) {
$strings[]=explode('=',$message);
}
foreach ($strings as $string) {
    $data[$string[0]]=$string[1];
}
var_dump($data);
?>

重點在於這行explode("</br>",$ugly_string)

我們使用 </br> 這個換行符號進行字串的切割,轉換成陣列,所以得到的結果會是如下

array(10) {
  [0]=>
  string(8) "status=1"
  [1]=>
  string(14) "desc=Succeeded"
  [2]=>
  string(7) "rvg2c=1"
  [3]=>
  string(9) "dcvc=4989"
  [4]=>
  string(24) "smilepayno=1_2_1_6374720"
  [5]=>
  string(24) "data_id=2017010218171637"
  [6]=>
  string(9) "amount=69"
  [7]=>
  string(13) "atmbankno=004"
  [8]=>
  string(22) "atmno=3721477005374720"
  [9]=>
  string(28) "payenddate=2017/1/5 23:59:59"
}

如此一來我們就將字串切割轉換為陣列了。
當然這個 function 還有很多參數可以設定,這方面就不細講了,大家有興趣可以去參考官方的 Doc 。

參考資料