在PHP中回显特定的JSON节点

时间:2018-12-10 04:10:16

标签: php json api

好,所以我制作了一个RSS到JSON文件 https://www.dannny0117.com/.well-known/api/news2.php

它的工作原理是,它将RSS源中的输出作为JSON返回。现在,我只想使用PHP echo打印一些元素。

根据JSON,我需要抓取channel item titleguid,因为这些都是我要输出的东西。

我只需要第一个帖子标题和链接,但是我的代码只是因为我不完全知道如何访问该东西而不会使用它

这是我正在使用的代码,我认为应该回显但不应该

<?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读取项目。

2 个答案:

答案 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]);