Парсинг Википедии API с PHP - PullRequest
       23

Парсинг Википедии API с PHP

0 голосов
/ 26 октября 2018

У меня есть PHP-скрипт, который извлекает результат JSON из API Википедии и сохраняет его в переменной $ json, затем я json декодирую его в $ data:

<code><?php

$q = htmlspecialchars(($_GET["q"]));

$url = 'https://en.wikipedia.org/w/api.php?action=query&list=search&srnamespace=0&srprop=snippet&format=json&callback=json&origin=*&prop=links|extracts|categories|images&srsearch=test';
$json = file_get_contents($url);

/*
print "<pre>";print_r($json);print "
"; * / $ data = json_decode ($ json, true); echo $ data ['query'] ['search'] [0] ['title'];

Это возвращает файл JSON, но я не могу с ним работать. Мне нужно извлечь тег заголовка и повторить его, как будто это ничего не делает.

echo $data['query']['search'][0]['title'];

Любая идея, как исправить мой код, чтобы получить следующий тег заголовка:

enter image description here

1 Ответ

0 голосов
/ 26 октября 2018

Удалите &callback=json из вашего URL. Это делает запрос на JSONP (ироническая ссылка на википедию). Он оборачивает ответ функцией обратного вызова JavaScript, поэтому вместо PHP, который вам нужен в PHP, вы получаете

/**/json(THE JSON HERE)

Вы можете увидеть его в источнике страницы, даже если он отображается в виде JSON на странице. Эти дополнительные символы делают json_decode неудачным. Этот параметр больше предназначен для междоменных запросов от JS.

Похоже, вы уже правильно обращаетесь к полученному массиву с помощью

echo $data['query']['search'][0]['title'];

Вы можете подумать, что это даст вам какое-то предупреждение или уведомление, когда вы попытаетесь получить доступ к этим ключам массива, когда $data равно нулю, но не будет .

...