PHP中的Curl将HTML检索到变量不起作用

时间:2013-12-08 05:38:45

标签: php curl

我的代码段(这是在以前的 Curl 命令登录并存储Cookie之后发生的):

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"https://www.example.com");   
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
$result = curl_exec ($curl);
if ($result === FALSE) {
    echo "cURL Error: " . curl_error($curl);
}
curl_close ($curl);
print 'result: '.$result;

显示的结果只打印标题。换句话说,实际的源HTML似乎没有保存到$result变量。我知道结果是存在的,因为当我在检索到的页面上查看源时 - 一切都在那里。如果它有所不同,我要求的页面是XML。

谢谢

3 个答案:

答案 0 :(得分:0)

替换print 'result: '.$result;

echo htmlspecialchars($result);

如果您要显示 <tags> ,则需要执行此操作。

答案 1 :(得分:0)

您已设置此变量:

  

curl_setopt($ curl,CURLOPT_HEADER,1);

这就是你获得标题的原因。

您将结果打印到浏览器,浏览器会看到XML标记并使用它们执行XML操作。数据存在,因为您在View-&gt; Source时看到了它。如果删除标题,浏览器可能会抱怨缺少样式表并显示原始XML。但是,正如你已经向自己证明的那样,你有数据。

答案 2 :(得分:0)

要详细说明@ rand'Chris的答案,您可以 remove

curl_setopt($curl, CURLOPT_HEADER, 1);

curl_setopt($curl, CURLOPT_VERBOSE, 1);

您将不再收到example.com的标题。当然,由于您访问的是其他站点,因此这可能不是完整的(甚至是正确的)解决方案。