Я сделал файл RSS в JSON https://www.dannny0117.com/.well-known/api/news2.php
Он работает тем, что возвращает результат в формате JSON из источника RSS. Теперь я хочу напечатать только несколько элементов из этого с помощью PHP echo.
Согласно JSON, мне нужно взять channel, item, title и guid, поскольку это то, что я хочу вывести.
Мне нужны только заголовок 1-го поста и ссылка, но мой код просто не подберет его, потому что я не совсем знаю, как получить к нему доступ.
Вот код, который я использую, который, я думаю, должен быть echo, но не работает:
<?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, основная проблема в том, что мой код НЕ МОЖЕТ читать элементы из необходимого JSON.
Добавьте соответствующий код и выход к вашему вопросу. Вопросы, требующие помощи по отладке («почему этот код не работает?»), должны включать желаемое поведение, конкретная проблема или ошибка и самый короткий код, необходимый, чтобы воспроизвести его в самом вопросе. Вопросы без четкая постановка проблемы другим читателям не пригодятся. См .: Как создать минимальный, полный и проверяемый пример.
Кроме того, вам действительно не следует использовать папку /.well-known для своего собственного кода. Для хорошего объяснения того, что это за папка, см. serverfault.com/a/795474/201883 и iana.org/assignments/well-known-uris/well-known-uris.xhtml.
Возможная полезная ссылка: - stackoverflow.com/questions/6606713/…






вы можете проверить эту ссылку здесь, она о предопределенных константах, обычно, когда вы имеете дело с не латинскими буквами, у вас может быть такой беспорядок. попробуйте использовать 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);
@ Dannny0117 Пожалуйста, проверьте обновленный ответ, я добавил фрагмент кода, который добавляет тип контента в процесс получения, чтобы вы могли в первую очередь получить данные в правильной кодировке
Вы сделали 2 ошибки:
1) У вас есть символы UTF-8 в вашей строке json.
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]);
вы можете опубликовать свой json файл, пожалуйста?