我正在尝试使用以下脚本获取维基百科文章的第一段。当我用多个单词查询时,它不起作用。
<?php
$query = urlencode($_GET['query']);
$url = "http://en.wikipedia.org/w/api.php?action=parse&page=$query&format=json&prop=text§ion=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);
?>
无论如何都要查询维基百科的结果,默认情况下选择第一个结果。
答案 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 $