Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WikipediaAPI的curl错误,但可以通过浏览器工作_Php_Curl_Wikipedia Api - Fatal编程技术网

Php WikipediaAPI的curl错误,但可以通过浏览器工作

Php WikipediaAPI的curl错误,但可以通过浏览器工作,php,curl,wikipedia-api,Php,Curl,Wikipedia Api,我想使用WikipediaAPI通过php和curl获得一个页面。 我在上阅读了说明,我的示例与之类似 目的是自动获取给定标题的电影信息 function getWikipediaFilmUrl($filmName) { $apiurl = "http://it.wikipedia.org/w/api.php"; $parameters['format'] = "json"; $parameters['prop'] = "revisions"; $paramet

我想使用WikipediaAPI通过php和curl获得一个页面。 我在上阅读了说明,我的示例与之类似

目的是自动获取给定标题的电影信息

function getWikipediaFilmUrl($filmName) {
    $apiurl = "http://it.wikipedia.org/w/api.php";

    $parameters['format'] = "json";
    $parameters['prop'] = "revisions";
    $parameters['rvprop'] = "content";
    $parameters['action'] = "query";
    $parameters['titles'] = rawurlencode(ucwords($filmName));
    $parameters['redirects'] = "";

    $fields_string = "";
    $url = "";
    foreach ($parameters as $key => $value) {
        $fields_string[] = $key . '=' . $value;
    }
    $url = $apiurl . '?' . implode('&', $fields_string);

    //debug
    print_r($parameters);
    echo "<br /><a href='$url'>Resulting URL: $url</a><hr />";
    //

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, FALSE);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_REFERER, "");
    curl_setopt($ch, CURLOPT_HEADER, false);

    $result = curl_exec($ch);
    curl_close($ch);

    echo $result;
}

getWikipediaFilmUrl("main page");
这段代码应该得到主页。生成的URL是 如果您试图用浏览器打开它,它可以工作,但通过curl获取时会返回一个带有一般错误的页面和有关api使用情况的文本文档

我只是尝试在curl调用中复制并粘贴生成的url,它可以工作。。。。到底为什么$url不起作用,但它的内容呢

变化

$url = $apiurl . '?' . implode('&amp;', $fields_string);

您不需要逃避这些符号,因为您不需要将它们输出到HTML中,而只是直接将它们输入到curl中

$url = $apiurl . '?' . implode('&', $fields_string);