Php 将文本元素捕获为变量
我试图从一个对象捕获特定元素的第一个实例。我有一个$doc对象,希望得到以下值 id、url、别名、描述和标签,即:Php 将文本元素捕获为变量,php,json,wikidata,Php,Json,Wikidata,我试图从一个对象捕获特定元素的第一个实例。我有一个$doc对象,希望得到以下值 id、url、别名、描述和标签,即: 变量1-Q95 variable2-//www.wikidata.org/wiki/Q95 变量3-谷歌公司 varialbe4——美国跨国互联网和技术公司 变量5-谷歌 我在获取$jsonArr字符串方面取得了一些进展,但是我不确定这是最好的方法,如果是这样,我也不确定如何继续。 请告知获取这些信息的最佳方式。请参阅下面我的代码: <HTML> <body
- 变量1-Q95
- variable2-//www.wikidata.org/wiki/Q95
- 变量3-谷歌公司
- varialbe4——美国跨国互联网和技术公司
- 变量5-谷歌
<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>
搜索:
loadHTMLFile(“https://www.wikidata.org/w/api.php?
action=wbsearchentities&search=$search&format=json&language=en“;
libxml_clear_errors();
libxml_使用_内部_错误($errors);
var_dump($doc);
回声“”;
$jsonArr=$doc->documentElement->nodeValue;
$jsonArr=(字符串)$jsonArr;
echo$jsonArr;
}
?>
由于对API请求的响应是JSON,而不是HTML或XML,因此最适合使用cURL或流库来执行HTTP请求。你甚至可以使用一些原始的东西,比如
例如,使用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."
您可以使用检查$contents
并像遍历任何PHP对象一样遍历它