查询维基百科的内容

时间:2014-07-01 20:21:29

标签: php wikipedia wikipedia-api

我正在尝试使用以下脚本获取维基百科文章的第一段。当我用多个单词查询时,它不起作用。

<?php

$query = urlencode($_GET['query']);

$url = "http://en.wikipedia.org/w/api.php?action=parse&page=$query&format=json&prop=text&section=0";
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "TestScript"); // required by wikipedia.org server; use YOUR user agent with YOUR contact information. (otherwise your IP might get blocked)
$c = curl_exec($ch);

$json = json_decode($c);

$content = $json->{'parse'}->{'text'}->{'*'}; // get the main text content of the query (it's parsed HTML)

// pattern for first match of a paragraph
$pattern = '#<p>(.*)</p>#Us'; // http://www.phpbuilder.com/board/showthread.php?t=10352690
if(preg_match($pattern, $content, $matches))
{
    // print $matches[0]; // content of the first paragraph (including wrapping <p> tag)
    $cont = strip_tags($matches[1]); // Content of the first paragraph without the HTML tags.
}


$pattern = '/\[([^\[\]]|(?R))*]|\(([^()]|(?R))*\)/';
echo $my = preg_replace($pattern, '', $cont);

?>

Demo 1: Bangalore

Demo 2: Los Angeles

无论如何都要查询维基百科的结果,默认情况下选择第一个结果。

1 个答案:

答案 0 :(得分:1)

您需要在将查询字符串传递给curl之前对其进行url编码。

<?php $query = urlencode($_GET['query']); ?>
编辑:我尝试了你的代码,它通过用字符'+'替换空格来工作。 url编码不起作用,因为它用'%20'替换它们。

试试这个

$query = str_replace(' ', '+', $_GET['query']);

以下是洛杉矶和新德里的输出

iMac-de-Valentin:所以valentin $ php so.php 洛杉矶正式成为洛杉矶市,通常以其首字母洛杉矶而闻名,是美国加利福尼亚州人口最多的城市,也是仅次于纽约市的美国第二大人口城市,人口在2010年美国人口普查3,792,621。它的土地面积为469平方英里,位于南加州。 iMac-de-Valentin:所以valentin $ php so.php 新德里i /njuːdɛli/是印度的首都,也是印度政府的行政,立法和司法部门的所在地。它也是德里国家首都辖区政府的中心。新德里位于德里的大都市内,是德里国家首都直辖区的十一个区之一。 iMac-de-Valentin:所以valentin $