我正在使用GitHub上的AmazonMwsComplete存储库来向Amazon的AWS API(特别是GetReport调用)发出请求。我的请求得到了积极的回应,因此一切似乎都很好,唯一的问题是它似乎将XML回应转换为制表符分隔的字符串,我无法解决如何正确格式化为一个PHP数组。
本质上,响应看起来像这样:
string(52148) "sku asin price quantity Business Price Quantity Price Type Quantity Lower Bound 1 Quantity Price 1 Quantity Lower Bound 2 Quantity Price 2 Quantity Lower Bound 3 Quantity Price 3 Quantity Lower Bound 4 Quantity Price 4 Quantity Lower Bound 5 Quantity Price 5 ProductTaxCode VatExclusivePrice VatExclusiveBusinessPrice VatExclusiveQuantityPrice1 VatExclusiveQuantityPrice2 VatExclusiveQuantityPrice3 VatExclusiveQuantityPrice4 VatExclusiveQuantityPrice5
XX-XXXX-XXXX XXXXXXXXXX 0.01 1
XX-XXXX-XXX XXXXXXXXXX 0.01 1
XXX-XXX-XXX XXXXXXXXXX 0.01 1“
当我将其转换为数组时,它看起来像这样:
array(22702) {
[0]=>
string(3) "sku"
[1]=>
string(4) "asin"
[2]=>
string(5) "price"
[3]=>
string(8) "quantity"
[4]=>
string(14) "Business Price"
[5]=>
string(19) "Quantity Price Type"
[6]=>
string(22) "Quantity Lower Bound 1"
[7]=>
string(16) "Quantity Price 1"
[8]=>
string(22) "Quantity Lower Bound 2"
[9]=>
string(16) "Quantity Price 2"
[10]=>
string(22) "Quantity Lower Bound 3"
[11]=>
string(16) "Quantity Price 3"
[12]=>
string(22) "Quantity Lower Bound 4"
[13]=>
string(16) "Quantity Price 4"
[14]=>
string(22) "Quantity Lower Bound 5"
[15]=>
string(16) "Quantity Price 5"
[16]=>
string(14) "ProductTaxCode"
[17]=>
string(17) "VatExclusivePrice"
[18]=>
string(25) "VatExclusiveBusinessPrice"
[19]=>
string(26) "VatExclusiveQuantityPrice1"
[20]=>
string(26) "VatExclusiveQuantityPrice2"
[21]=>
string(26) "VatExclusiveQuantityPrice3"
[22]=>
string(26) "VatExclusiveQuantityPrice4"
[23]=>
string(40) "VatExclusiveQuantityPrice5
XX-XXXX-XXXX"
[24]=>
string(10) "XXXXXXXXX"
[25]=>
string(5) "0.01"
[26]=>
string(1) "1"
[27]=>
string(0) ""
[28]=>
string(0) ""
[29]=>
string(0) ""
[30]=>
string(0) ""
}
这有一些问题,“ VatExclusiveQuantityPrice5”标题与产品SKU的第一条信息混合在一起,因此它位于数组的同一元素中。
以制表符分隔的字符串还使用20个制表符作为“换行符”,因此在下一条信息之前,我最终在数组中包含20个空白元素。
我对此有一个可能的解决方案,涉及将其转换为文本文件并直接导入数据库,但是肯定有一种简单的方法可以将其转换为PHP数组,数据库选项似乎要困难得多。去处理这些信息。
答案 0 :(得分:3)
$myArray = [];
$lines = explode(PHP_EOL, $myText);
$l = 0;
foreach($lines as $line) {
$myArray[$l] = explode("\t", $line);
$l++;
}
PHP_EOL:换行符之一,“ \ n”,“ \ r”或“ \ n \ r”
“ \ t”:'tab'字符,带有双引号,因此PHP可以将其解释为特殊字符,而不仅仅是字符串\ t
第一行是标题,下一行是表格内容。
答案 1 :(得分:0)
PHP具有一个简单的explode()
函数,该函数可以做到这一点:取一个字符串,在指定的分隔符处将其分割,然后返回一个数组。
http://php.net/manual/en/function.explode.php
您可能需要调整定界符参数,或替换字符串中的char以创建单个定界符,或者如果只是一个简单的选项卡,则根本不创建定界符。