维基百科PHP - 处理结果

时间:2013-09-25 13:44:10

标签: php api mediawiki

我使用MediaWiki api为维基百科提供PHP序列化的特定国家/地区的信息。

http://en.wikipedia.org/w/api.php?action=query&titles=Belgium&prop=revisions&rvprop=content&rvsection=0&format=php

我的问题

如何从此阵列中获取特定字段?像f.e。:

  • 资本
  • 人口普查
  • 地图标题(地区,官方语言,......)

我不熟悉这个输出...... 谢谢!

3 个答案:

答案 0 :(得分:1)

api无意访问capitalbelgium等属性或类似内容。您将获得带有wiki源代码的wikipage以及页面标题等一些额外信息。例如,维基页面可以包含有关编程语言,花卉,汽车或国家/地区的信息,只是标记没有特殊数据字段。

响应格式是序列化的php数据。使用unserialize将其解析为数组但不希望获得有关belgium的结构化信息:

$response = file_get_contents('http://en.wikipedia.org/w/api.php?action=query&titles=Belgium&prop=revisions&rvprop=content&rvsection=0&format=php');
$data = unserialize($response);
var_dump($data);

答案 1 :(得分:0)

它看起来像序列化的PHP,你可以unserialize(),因为其他人已经回答。我建议改为使用JSON格式:

  

http://en.wikipedia.org/w/api.php?action=query&titles=Belgium&prop=revisions&rvprop=content&rvsection=0&format= JSON

然后,您可以使用json_decode()来解析JSON响应并将其转换为关联数组:

$json = file_get_contents($file);
$decoded = json_decode($json, TRUE);

foreach ($decoded as $key => $value) {
    // get the details you need
}

答案 2 :(得分:0)

使用此功能unserialize()

$array = file_get_contents('http://en.wikipedia.org/w/api.php?action=query&titles=Belgium&prop=revisions&rvprop=content&rvsection=0&format=json');
$array = unserialize( $array );
print_r( $array );