doushi8599 2016-11-24 11:20
浏览 957
已采纳

使用file_get_contents从url获取JSON

I have a server that provide some data in JSON. I tried to get these data with the usual:

$res = file_get_contents($url);
$result = json_decode($res);
var_dump($result);

But $result is yet a string. The problem is that the data that comes from file_get_content has some alphanumerical string before data and a zero after.

something like:

215ba
{"@attributes":{"ticker":"FCA"},"info...... // here all json data
0

I already checked json validity directly from the url and it's properly formatted, I can not understand where zero and 215ba come from.

Obviously I could strip the strings eliminating both but I was wondering if there was a more concrete solution instead of a workaround

PS: unfortunately I can not use cURL

  • 写回答

3条回答 默认 最新

  • dpwdsmbvm496180204 2016-11-24 11:25
    关注

    Note on the docs for json_decode: http://php.net/manual/en/function.json-decode.php

    This function only works with UTF-8 encoded strings..

    Something like this might fix it:

    $contents = file_get_contents($url);
    $contents = utf8_encode($contents);
    $results = json_decode($contents); 
    

    If that's not working you could use regex to check for new lines. Assuming the json will always be on 1 line.

    <?php
    $contents = file_get_contents($url);
    $contents = utf8_encode($contents);
    preg_match('/^.+[
    ](.+)[
    ]./', $contents, $matches);
    
    //the json is in $matches[1]
    print_r($matches);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大