好,所以我制作了一个RSS到JSON文件 https://www.dannny0117.com/.well-known/api/news2.php
它的工作原理是,它将RSS源中的输出作为JSON返回。现在,我只想使用PHP echo
打印一些元素。
根据JSON,我需要抓取channel
item
title
和guid
,因为这些都是我要输出的东西。
我只需要第一个帖子标题和链接,但是我的代码只是因为我不完全知道如何访问该东西而不会使用它
这是我正在使用的代码,我认为应该回显但不应该
<?php
$url = "https://www.dannny0117.com/.well-known/api/news2.php";
$content = file_get_contents($url);
$json = json_decode($content, true);
$title = $content['channel']['item'][0]['title'];
$link= $content['channel']['item'][0]['guid'];
echo $title , $link;
?>
更新:这不是编码或Unicode字符的问题,主要问题是我的代码CANT从所需的JSON读取项目。
答案 0 :(得分:0)
您可以检查此链接here,它有关预定义常量,通常当您不处理任何拉丁字母时,您可能会遇到这种混乱。尝试使用JSON_UNESCAPED_UNICODE 这将解决您的问题。 您可以使用以下内容:
$json_output = json_decode($content, true, JSON_UNESCAPED_UNICODE);
正如您所说的那样,它不起作用,所以您会尝试添加它:
$options = array('http' => array(
'header' => 'Accept-Charset: UTF-8'
)
); $context = stream_context_create($options);
$url = "https://www.dannny0117.com/.well-known/api/news2.php";
$content= file_get_contents($url, false, $context);
$json = json_decode($content, true,JSON_UNESCAPED_UNICODE);
答案 1 :(得分:0)
您犯了2个错误:
1)您的json字符串中包含UTF-8字符。
2)您在变量json_decode()
中有$json
字符串的输出,但是您正在使用$content
。
使用下面的代码。
$url = "https://www.dannny0117.com/.well-known/api/news2.php";
$content = file_get_contents($url);
$enc = mb_detect_encoding($content);
if($enc == 'UTF-8') {
$content = preg_replace('/[^(\x20-\x7F)]*/','', $content);
}
$json = json_decode($content,true);
$title = $json['channel']['item'][0]['title'];
$link = $json['channel']['item'][0]['guid'];
echo "<pre>";
print_r([$title , $link]);