json — получить временную метку статьи в PHP с API Википедии

Мне нужно более простое объяснение, чем Как извлечь данные из JSON с помощью PHP? И мне также нужно плевать дату от отметки времени в окончательном PHP.

Я могу получить метаданные «Тестовой статьи» в PHP через API-интерфейс WIKIPIA JSON следующим образом:

<?php
$json_string = file_get_contents("https://en.wikipedia.org/w/api.php?action=query&titles=Test_article&prop=revisions&rvlimit=1&format=json");
print $json_string;
?>

Что дает мне это:

{"continue":{"rvcontinue":"20161025140129|746140638","continue":"||"},"query":
{"normalized":[{"from":"Test_article","to":"Test article"}],"pages":{"29005947":
{"pageid":29005947,"ns":0,"title":"Test article","revisions":
[{"revid":746140679,"parentid":746140638,"user":"Theblackmidi72",
"timestamp":"2016-10-25T14:01:47Z","comment":"Undid revision 746140638 by
[[Special:Contributions/Theblackmidi72|Theblackmidi72]] ([[User
talk:Theblackmidi72|talk]])"}]}}}}

Но как мне получить и вывести / вывести на печать только дату из отметки времени, то есть «2016-10-25» из "timestamp":"2016-10-25T14:01:47Z"и только эта строка из всей строки JSON?

Я предполагаю, что мне нужно сначала получить полную строку 016-10-25T14:01:47Z а затем раздеть T14:01:47Z от него.

Редактировать 25.11.16 Ответ Джеффа отлично работает, и я преобразовал функцию в шорткод, чтобы я мог вставить его в содержимое поста / страницы.

function wikipedia_article_date() {

$url = "https://en.wikipedia.org/w/api.php?action=query&titles=Test_article&prop=revisions&rvlimit=1&format=json";

$data = json_decode(file_get_contents($url), true);
$date = $data['query']['pages']['746140638']['revisions'][0]['timestamp'];

$date = new DateTime($date);
return $date->format('m-d-Y');
}

add_shortcode('article_date','wikipedia_article_date');

Но теперь я получаю предупреждение PHP:

file_get_contents(https://en.wikipedia.org/w/api.php?action=query&
amp;titles=Test_article&amp;prop=revisions&amp;rvlimit=1&amp;format=json):
failed to open stream: no suitable wrapper could be found in
/functions/shortcodes.php

это проблема с моим шорткодом или с оригинальной функцией?

0

Решение

  1. json_decode преобразует JSON в собственный массив PHP для удобного управления

  2. print_r будет рекурсивно распечатывать массив, чтобы вы могли легко прочитать его вручную, чтобы обнаружить структуру документа.

  3. DateTime::format полезно для преобразования форматов даты / времени.


<?php

$url = "https://en.wikipedia.org/w/api.php?action=query&titles=Test_article&prop=revisions&rvlimit=1&format=json";

$data = json_decode(file_get_contents($url), true);

// this will show you the structure of the data
//print_r($data);

// just the value in which you're interested
$date = $data['query']['pages']['29005947']['revisions'][0]['timestamp'];

// cast to the format you want
$date = new DateTime($date);
echo $date->format('Y-m-d');

2016-10-25

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]