从远程服务器获取html页面内容的基本cURL示例

时间:2017-04-25 10:08:46

标签: php curl

以下是代码:

/*
* Example to fetch the example.com homepage into a file
*/

$curlObject = curl_init("http://AAA.BBB.CCC.DDD/");//AAA.BBB.CCC.DDD is the IP address of the remote server.

$file = fopen("example_homepage.txt", "w");

curl_setopt($curlObject, CURLOPT_FILE, $file);
curl_setopt($curlObject, CURLOPT_HEADER, 0);

curl_exec($curlObject);

curl_close($curlObject);

fclose($file);

它基于示例here。我正在学习基本的cURL用法。预期的输出是位于我的远程计算机(其IP为index.php)中安装的XAMPP服务器的index.html目录中的htdocsAAA.BBB.CCC.DDD的内容应该是执行此PHP脚本后,将其复制到example_homepage.txt文件中。

现在创建了example_homepage.txt文件,但它是EMPTY。位于index.php的主页(index.htmlhtdocs)的内容安装在远程计算机中的XAMPP服务器的目录不会复制到新创建的example_homepage.txt

问题是为什么以及如何解决此问题?

1 个答案:

答案 0 :(得分:1)

  1. curl选项CURLOPT_FILE对我来说从来没有真正起作用,也许是错误的。不要使用它,还有其他方法。

  2. 为了接收正文内容,请将选项CURLOPT_RETURNTRANSFER设为curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, true);,否则您什么也得不到。

  3. 这对我来说非常有效(如果文件不存在,file_put_contents()会创建该文件。)

    <?php
    $curlObject = curl_init("http://example.com/");
    curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($curlObject);
    curl_close($curlObject);
    file_put_contents('example_homepage.txt', $result);
    
  4. 我尝试了google.de,这是example_homepage.txt的内容:

    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>301 Moved</TITLE></HEAD><BODY>
    <H1>301 Moved</H1>
    The document has moved
    <A HREF="http://www.google.de/">here</A>.
    </BODY></HTML>
    

    使用例如http://www.google.de/它会按预期工作。