维基百科PHP - 处理结果


Wikipedia PHP - handle results

我使用MediaWiki api来获取维基百科一个PHP序列化的特定国家的信息。

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

我的问题

如何从此数组中获取特定字段?比如:

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

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

API 不是用来访问capital这样的属性,也可以使用 belgium 或类似的东西。您只需将wiki页面作为源代码wiki以及一些额外的信息(如页面标题)一起获取。例如,在您的示例中,wiki页面可以包含有关编程语言,花朵,汽车或国家的信息,它只是markdown没有特殊的数据字段。

响应格式是序列化的 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);

它看起来像序列化的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
}

使用此函数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 );