一位朋友问我一个简单的代码来从网站上获取值,没问题。 这个网站再次使用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 bug,不确定。
解决此问题的任何解决方法?
答案 0 :(得分:1)
所以!根据{{3}}
,这确实是一个php bug这是固定版本:
$data = file_get_contents('https://blockchain.info/fr/ticker');
$res = preg_replace( '/":(\d+)/', '":"\1"', $data );
$json = json_decode($res);
print_r($json->{'EUR'}->{'15m'});
答案 1 :(得分:0)
改善John Konolol的答案:如果值是以sci格式表示的浮点十进制数,则正则表达式将不起作用(" 2.038069541E9")。
正则表达式必须是:
preg_replace( '/":(\d+\.*\d*E*e*\d*)/', '":"\1"', $data)
它会将所有数字转换为字符串,包括在Json中有效的浮点数(1.34)或sci格式数字(1E3)。