Захват текстовых элементов как переменных

Я пытаюсь захватить первый экземпляр определенных элементов из объекта. У меня есть объект $ doc, и я хотел бы получить следующие значения.

идентификатор, URL, псевдоним, описание и метка, то есть, в частности:

  • переменная1 — Q95,
  • переменная 2 — //www.wikidata.org/wiki/Q95,
  • переменная 3 — Google.Inc,
  • varialbe4 — американская многонациональная интернет-технологическая корпорация,
  • переменная5 — Google

Я добился некоторого прогресса в получении строки $ jsonArr, однако я не уверен, что это лучший способ, и если да, то я все равно не уверен, как развиваться.
Посоветуйте, пожалуйста, как лучше всего их получить. Пожалуйста, смотрите мой код ниже:

<HTML>
<body>
<form method="post">
Search: <input type="text" name="q" value="Google"/>
<input type="submit" value="Submit">
</form>

<?php
if (isset($_POST['q'])) {
$search = $_POST['q'];
$errors = libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile("https://www.wikidata.org/w/api.php?
action=wbsearchentities&search=$search&format=json&language=en");
libxml_clear_errors();
libxml_use_internal_errors($errors);

var_dump($doc);
echo "<p>";
$jsonArr = $doc->documentElement->nodeValue;

$jsonArr = (string)$jsonArr;
echo $jsonArr;

}
?>
</body>
</HTML>

2

Решение

Поскольку ответом на ваш запрос API является JSON, а не HTML или XML, наиболее целесообразно использовать библиотеку cURL или Stream для выполнения HTTP-запроса. Вы даже можете использовать что-то примитивное, как file_get_contents.

Например, используя cURL:

// Make the request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.wikidata.org/w/api.php?action=wbsearchentities&search=google&format=json&language=en");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

// Decode the string into an appropriate PHP type
$contents = json_decode($output);

// Navigate the object
$contents->search[0]->id; // "Q95"$contents->search[0]->url; // "//www.wikidata.org/wiki/Q95"$contents->search[0]->aliases[0]; // "Google Inc."

Ты можешь использовать var_dump осмотреть $contents и пройти его, как любой объект PHP.

0

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

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

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