PHP:如何从 Wiki 中检索提取文本 API
PHP: How to retrieve extract text from Wiki API
我对 Wiki 进行了以下调用以检索有关地点的信息,用户通过名为 'location'
的输入搜索这些地点
// get wiki info about search term
$wiki_url = 'https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=' . urlencode($_GET['location']);
示例:https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=hungary
// get result of Wiki Search
$wiki_json = file_get_contents($wiki_url);
// decode data to use in php
$wiki_array = json_decode($wiki_json, true);
我尝试以与其他 API 相同的方式获取文本,但它不起作用,因为我似乎需要 pageId 来访问文本所在的数组。
有没有办法绕过这个并在不知道 pageID 的情况下获取文本?
对此有多种可能的解决方案。
您可以在其上使用 reset() / current() against the pages
property to get the first / current item in that array, or you could loop around that property with a foreach
and ignore the keys. You could also use array_values() on the pages
property to get force sequential indicies, or use array_keys() 来获取页面 ID 列表并使用它们来访问每个项目。 (还有其他方法)。
foreach
选项将是您的最佳选择。
foreach($wiki_array['query']['pages'] as $page)
$page 循环内将是您之后的数组。
然后您应该确保可以正确处理多个结果。
我对 Wiki 进行了以下调用以检索有关地点的信息,用户通过名为 'location'
的输入搜索这些地点// get wiki info about search term
$wiki_url = 'https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=' . urlencode($_GET['location']);
示例:https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=hungary
// get result of Wiki Search
$wiki_json = file_get_contents($wiki_url);
// decode data to use in php
$wiki_array = json_decode($wiki_json, true);
我尝试以与其他 API 相同的方式获取文本,但它不起作用,因为我似乎需要 pageId 来访问文本所在的数组。
有没有办法绕过这个并在不知道 pageID 的情况下获取文本?
对此有多种可能的解决方案。
您可以在其上使用 reset() / current() against the pages
property to get the first / current item in that array, or you could loop around that property with a foreach
and ignore the keys. You could also use array_values() on the pages
property to get force sequential indicies, or use array_keys() 来获取页面 ID 列表并使用它们来访问每个项目。 (还有其他方法)。
foreach
选项将是您的最佳选择。
foreach($wiki_array['query']['pages'] as $page)
$page 循环内将是您之后的数组。
然后您应该确保可以正确处理多个结果。