Php 最好从get_stream_content()获取数组
我有一个字符串,它在使用codePhp 最好从get_stream_content()获取数组,php,arrays,amazon-web-services,Php,Arrays,Amazon Web Services,我有一个字符串,它在使用code$content1=stream\u get\u contents($request->getReport())后包含空格 它返回输出 Order ID Order date Fulfillment Channel Points Bonus Message response greater than 24 hours Late Shipment Cancellation Negative Feedback 002-3444-XXXX
$content1=stream\u get\u contents($request->getReport())后包含空格代码>
它返回输出
Order ID Order date Fulfillment Channel Points Bonus Message response greater than 24 hours Late Shipment Cancellation Negative Feedback
002-3444-XXXX 10/31/15 Fulfilled by Amazon 100
002-XXXX-XXX7 10/31/15 Fulfilled by Amazon 100
我想将上面的字符串转换为数组,如下所示
$array['Order ID']=002-3444-XXXX;
$array['Order date']=10/31/15;
$array['Fulfillment Channel']=Fulfilled by Amazon;
$array['Points']=100;
$array['Bonus']='';..... so on
请给我建议一种将字符串转换为数组的可能方法。这是我的代码,正如我所说,它有点凌乱,而且我对正则表达式不是很在行,所以使用它时要小心
<?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;
}*/
}
?>
您总是只有这5个参数吗?不,我们可能会有消息、响应、超过24小时、延迟装运、取消、,非正面反馈如果有任何价值,我可以给你写一个函数,但那会非常具体:/所以我不知道它是否真的有用让我知道你的函数可能对我有帮助..我会根据我的requirement@Nirnae您能否共享将流内容转换为数组的功能?
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)