Вывести на PHP текст из json

144
25 мая 2021, 05:40

Есть вот такой json из API Википедии: https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Apple

Как на php вывести текст из поля extract, где начинается краткий текст?

Я пробовал вот так, но ничего не работает:

$url = file_get_contents('https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Apple'); 
$yummy = json_decode($url, true); 
echo $yummy['extract'];
Answer 1

Перед тем, как вывести переменную после парсинга данных, необходимо сделать её dump как правило, и посмотрев структуру вложенности. Если Вы не хотите это делать или по просту не умеете, но необходимо решить задачу, то воспользуйтесь онлайн преобразованием json в объект. Как мы видим на фотографии ниже, переменная extract находится в query->pages->39726->extract. Поэтому чтобы вывести данное значение Вам необходимо сделать так: echo $yummy['query']['pages']['39726']['extract']; Только учитывайте тот факт, что 39726 будет меняться то и дело и надо как-то динамически выводить). Это как домашнее задание Вам

Answer 2

Разрабатывая программы на PHP (и других языках программирования), часто приходится заглядывать в значения переменных, когда что-то идёт не так (ничего не работает). Такое заглядывание в код во время выполнения называется отладкой (или дебагом).

Самый простой способ выяснить что пошло не так в вашем случае, это посмотреть что находится в массиве к которому вы обращаетесь. Сделать это поможет функция var_dump. Просто напишите перед echo $yummy['extract']; var_dump($yummy); посмотрите на вывод. О! Кажется вы обращаетесь не по тому ключу!

Это просто. Но не всегда удобно, когда ошибка не так очевидна. Для более серьёзных случаев удобно использовать возможности IDE для дебага. Вспомните об этом через некоторое время, когда заметите что var_dump уже не достаточно удобен.

Answer 3
$url = file_get_contents('https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Apple'); 
$yummy = json_decode($url, true); 
$datas=$yummy['query']['pages'];
foreach($datas as $data){
  $extract =  $data['extract'];
}
echo $extract;
READ ALSO
Как добавить пагинацию в эту функцию HTML карты сайт?

Как добавить пагинацию в эту функцию HTML карты сайт?

Как добавить пагинацию в эту функцию HTML карты сайт?

89
Почему класс не срабатывает, ошибок никаких не выдаёт?

Почему класс не срабатывает, ошибок никаких не выдаёт?

Почему класс не срабатывает, ошибок никаких не выдаёт?

106
150+ полей в таблице MySQL - это нормально?

150+ полей в таблице MySQL - это нормально?

Представьте себе доску объявлений, где вы сначала выбираете категорию, а потом в зависимости от выбранной категории, вам предлагают заполнить...

120
Как защитить файл admin.php

Как защитить файл admin.php

есть в папке public_html файл с именем adminphp нужно защитить его логин:пароль

88