php - php json请求:json_decode unicode字符串

  显示原文与译文双语对照的内容

我尝试获取这里 json URL的内容: http://www.der-postillion.de/ticker/newsticker2.php

问题似乎"文本"的内容在内部有 Unicode 。

每次尝试获取json_decode时,它都失败。before以前没有出现过这个问题。 总是以这种方式拉 json:


$news_url_postillion = 'http://www.der-postillion.de/ticker/newsticker2.php';


$file = file_get_contents($news_url_postillion, false, $context);


$data = json_decode($file, TRUE);



//debug


print_r(array($data));



$news_text = $data['tickers'];



//test


echo $news_text->text[0];//echo first text element for test



foreach($news_text as $news){


 $news_text_output = $news->{'text'};


 echo 'Text:'. echo $news_text_output;. '<br>';


} 



谁知道这里有什么错误? 尝试使用类似以下内容的时间来获取编码工作数小时:


header("Content-Type: text/json; charset=utf-8");



或者


$opts = array(


 'http'=>array(


 'method'=>"GET",


 'header'=>"Content: type=application/jsonrn". 


"Content-Type: text/html; charset=utf-8"


 )


);



$context = stream_context_create($opts);



但不走运:

感谢你的帮助!

解决方法:

json源代码中有些不需要的元素,比如json启动时的BOM字符。 我不能影响源 json,所以提供给我的解决方案收费为 ,这将使我在正确的轨道上。 只需要 utf8_decode,因为他的代码只适用于没有特殊字符的英语语言。

用于解析和输出json的工作代码解决方案是:


<?php


//Postillion Newsticker Parser


$news_url_postillion = 'http://www.der-postillion.de/ticker/newsticker2.php';


$json_newsDataPostillion = file_get_contents($news_url_postillion);



//Fix the strange json source BOM stuff


$obj_newsDataPostillion = json_decode(preg_replace('/[x00-x1Fx80-xFF]/', '', $json_newsDataPostillion), true);



//DEBUG


//print_r($result);



foreach($obj_newsDataPostillion['tickers'] as $newsDataPostillion){


 $newsDataPostillion_text = utf8_decode($newsDataPostillion['text']);


 echo 'Text:'. $newsDataPostillion_text. '<br>';


};


?>



时间: 原作者:

我做了一些搜索并得到了:


$result = json_decode(preg_replace('/[x00-x1Fx80-xFF]/', '', $file), true);



原始帖子

原作者:

BOM 在你链接的文档开头有一个BOM字符,你需要在尝试解码它的内容之前删除它。

你可以看到它,如果你要下载这个 json,并且用更少的方法显示。

...