3

我正在尝试通过 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假设给我一个带有键和值的普通数组,但事实并非如此。

4

2 回答 2

2

如果您在json_last_error()尝试后json_decode()查看,您会发现您正在获得:

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

见:http: //3v4l.org/jkInl

请注意,JSON_UNESCAPED_UNICODE仅从 php 5.4 开始可用

另一种选择是做...

$quote = utf8_decode($quote);

......在你拿到它之后。这会将欧元符号转换为?字符。可能不是您想要的,但至少您可以让 json_decode 向您返回一个数组。

更新:有关更多信息,请参见此处:

PHP解码和编码带有unicode字符的json

于 2013-04-04T12:46:29.283 回答
0
于 2013-04-04T13:31:25.807 回答