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 。