gpt4 book ai didi

php json 请求 : json_decode unicode string

转载 作者:搜寻专家 更新时间:2023-10-31 21:03:51 26 4
gpt4 key购买 nike

<分区>

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

问题似乎是“文本”的内容包含 Unicode。

每次我尝试获取 json_decode 时,它​​都会以 NULL 失败...以前从未遇到过这个问题。总是以这种方式拉取 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/json\r\n" .
"Content-Type: text/html; charset=utf-8"
)
);

$context = stream_context_create($opts);

但运气不好 :(

感谢您的帮助!

解决方案:

json 源代码中有一些不需要的元素,例如 json 开头的 BOM 字符。我无法影响源 json,所以 walkingRed 提供的解决方案让我走上了正轨。只需要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-\x1F\x80-\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>';
};
?>

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com