一位朋友问我一个从网站获取值的简单代码,没问题。这个网站正在使用json API,再一次,没有问题。
但是,在分析结果后,我发现这些值都是错误的。
示例:
json上的值是846.51,但我的脚本返回844.71。
我当前的"代码":
$data = file_get_contents('https://blockchain.info/fr/ticker');
$json = json_decode($data);
print_r($json->{'USD'}->{'15m'});
所以,我搜索了一下,发现它可能是一个与x64处理器有关的php错误,不确定。
有什么解决办法吗?
所以!根据https://bugs.php.net/bug.php?id=50224
这是固定版本:
$data = file_get_contents('https://blockchain.info/fr/ticker');
$res = preg_replace( '/":('d+)/', '":"'1"', $data );
$json = json_decode($res);
print_r($json->{'EUR'}->{'15m'});
John Konolol的改进答案:如果值是以sci格式表示的浮动小数("2.038069541E9"),则正则表达式将不起作用。
Regex必须是:
preg_replace( '/":('d+'.*'d*E*e*'d*)/', '":"'1"', $data)
它会将所有数字转换为字符串,包括在Json中有效的浮点数(1.34)或sci格式的数字(1E3)。