我从php的网络调用中得到的响应是我从未见过的。我已经尝试过json_decode
函数,也已经尝试过下面的parse_str
,但是我无法获取要在数组中返回的值。
我想做的是输出带有名称,价格和URL的数组。退货的格式让我感到困惑(我完全复制了它,没有错别字或缺少'字符)。
$urltest='https://www.***';
$result408 = file_get_contents($urltest);
//parse_str($result408, $output);
Prices = [{'name':'Seller1', 'unknown':'unknown0', 'price':60.37, 'price_f':'$60<sup style="font-size:12px;">37</sup>', 'url':'http:…'},
{'name':'Seller2', 'unknown':'unknown0','price':87.25, 'price_f':'$87<sup style="font-size:12px;">25</sup>, 'url':'http:…'},
{'name':'Seller3', 'unknown':'unknown0', 'price':74, 'price_f':'$74<sup style="font-size:12px;">00</sup>', 'url':'http:…'}];
答案 0 :(得分:1)
从服务返回的JSON错误。看起来可以 对其进行更改以使其可以解析为JSON。 请记住,这种方法假定没有单引号 在任何数据值中。
$ tmp = str_replace('gSellPrices =','',$ result408); $ tmp = str_replace('“','\”',$ tmp); $ tmp = str_replace('\'','“',$ tmp); $ tmp = rtrim($ tmp,';');
$urltest='https://www.***';
$result408 = file_get_contents($urltest);
// Remove 'Prices = '
$tmp=str_replace('gSellPrices =', '',$result408);
// Protect the existing double quotes
$tmp = str_replace('"', '\\"', $tmp);
// Now replace all the incorrect single quotes with double quotes.
$tmp = str_replace('\'', '"', $tmp);
// Remove trailing semicolon
$tmp = rtrim($tmp, '; ');
// Now we can json_decode
$data = json_decode($tmp);
Assuming that the output from service is EXACTLY as follows:
Prices = [{'name':'Seller1', 'unknown':'unknown0', 'price':60.37, 'price_f':'$60<sup style="font-size:12px;">37</sup>', 'url':'http:…'},
{'name':'Seller2', 'unknown':'unknown0','price':87.25, 'price_f':'$87<sup style="font-size:12px;">25</sup>, 'url':'http:…'},
{'name':'Seller3', 'unknown':'unknown0', 'price':74, 'price_f':'$74<sup style="font-size:12px;">00</sup>', 'url':'http:…'}];
答案 1 :(得分:0)
您正在寻找json_decode(http://php.net/manual/tr/function.json-decode.php)
urltest='https://www.***';
$result408 = file_get_contents($urltest);
$output = json_decode($result408);