我正在尝试通过 Google 财经访问股票行情
这样做:
$quote = file_get_contents('http://finance.google.com/finance/info?client=ig&q=VSE:APG1L');
$json = str_replace("\n", "", $quote);
$data = substr($json, 4, strlen($json) -5);
print_r($data);
$json_output = json_decode($data, true);
print_r($json_output);
echo "\n".$json_output['l'];
json_decode
假设给我一个带有键和值的普通数组,但它没有。
最佳答案
如果您在尝试 json_decode()
后查看 json_last_error()
,您会发现您得到:
JSON_ERROR_UTF8 Malformed UTF-8 characters, possibly incorrectly encoded
试试这个:
$quote = file_get_contents('http://finance.google.com/finance/info?client=ig&q=VSE:APG1L');
$json = substr($quote, 4, -5);
$json_output = json_decode($json, true, JSON_UNESCAPED_UNICODE);
print_r($json_output);
请注意 JSON_UNESCAPED_UNICODE
仅适用于 php 5.4
另一种选择是...
$quote = utf8_decode($quote);
...在你获取它之后。这会将欧元符号转换为 ?
字符。可能不是你想要的,但至少你得到了 json_decode 来返回一个数组给你。
更新:查看此处了解更多信息:
关于php - json_decode($data, true);不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15811332/