這是我的代碼,正如我所說的,這有點亂,而且我對正則表達式不太好,所以在使用它時要小心。
<?php
//Our Response from AMAZON
$string = 'Order ID Order date Fulfillment Channel Points Bonus Message response greater than 24 hours Late Shipment Cancellation Negative Feedback002-3444-XXXX 10/31/15 Fulfilled by Amazon 100 002-XXXX-XXX7 10/31/15 Fulfilled by Amazon 100';
//Since we already know all the headers, we dont need to keep them into the response
$noHeaderStr = substr($string, strpos($string,'Feedback')+8);
//Split the remaining data into an arry
$arrayData = explode(' ', $noHeaderStr);
//Prepare Regex for data verification :
$patternID = '/^([0-9]{3})-(.*){4}-(.*){4}$/';
$patternDate= '/^([0-9]{2})\/([0-9]{2})\/([0-9]{2})$/';
$patternBonus = '/^[0-9]{3}$/';
//index for every order
$i = 0;
//Now we test every data
foreach ($arrayData as $data){
if (preg_match($patternID, $data)) {
//if we find an ID, that mean a new order so a new array too
$newArray[$i] = array();
$newArray[$i]['OrderID'] = $data;
}elseif(preg_match($patternDate, $data)) {
$newArray[$i]['Order date '] = $data;
var_dump($newArray[$i]);
$i++;
}
//THIS PART IS MESSY
/*elseif($data == 'Fulfilled by Amazon 100'){
$newArray[$i]['Fulfillment Channel Points'] = $data;
var_dump($newArray[$i]);
$i++;
}elseif(preg_match($patternBonus, $data)){
$newArray[$i]['Bonus'] = $data;
}*/
}
?>
這個增量對$ i應該是最後一個匹配。
從我給你的,現在你應該從收到的var_dump是這樣的:
array (size=2)
'OrderID' => string '002-3444-XXXX' (length=13)
'Order date ' => string '10/31/15' (length=8)
array (size=2)
'OrderID' => string '002-XXXX-XXX7' (length=13)
'Order date ' => string '10/31/15' (length=8)
你總是隻有那些5名PARAMS? – Nirnae
不,我們可能會有消息,響應,超過24小時,遲交貨,取消,負面反饋,如果他們會有任何價值 – user123456
嗯,我可以給你寫一個函數,但這將是非常具體的:/所以我沒有知道是否真的有用 – Nirnae