Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将文本元素捕获为变量_Php_Json_Wikidata - Fatal编程技术网

Php 将文本元素捕获为变量

Php 将文本元素捕获为变量,php,json,wikidata,Php,Json,Wikidata,我试图从一个对象捕获特定元素的第一个实例。我有一个$doc对象,希望得到以下值 id、url、别名、描述和标签,即: 变量1-Q95 variable2-//www.wikidata.org/wiki/Q95 变量3-谷歌公司 varialbe4——美国跨国互联网和技术公司 变量5-谷歌 我在获取$jsonArr字符串方面取得了一些进展,但是我不确定这是最好的方法,如果是这样,我也不确定如何继续。 请告知获取这些信息的最佳方式。请参阅下面我的代码: <HTML> <body

我试图从一个对象捕获特定元素的第一个实例。我有一个$doc对象,希望得到以下值

id、url、别名、描述和标签,即:

  • 变量1-Q95
  • variable2-//www.wikidata.org/wiki/Q95
  • 变量3-谷歌公司
  • varialbe4——美国跨国互联网和技术公司
  • 变量5-谷歌
我在获取$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>

搜索:
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对象一样遍历它