将HTML响应转换为PHP数组

时间:2018-09-17 14:07:47

标签: php html decode

我从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:…'}];

2 个答案:

答案 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);