以下代码将检索在PHP中使用CURL而不是https检索的网址的正文内容。任何人都可以告诉我如何编辑代码,因为我需要返回的数据不仅仅是标题。
从我在这里做的测试是结果。你可以看到它有内容长度,我只是不知道如何访问它。
由于 斯蒂芬
错误:0
string(1457)“HTTP / 1.1 200 OK日期:星期六,2009年8月1日06:32:11 GMT服务器:Apache / 1.3.41(达尔文)PHP / 5.2.4 mod_ssl / 2.8.31 OpenSSL / 0.9。 7l Cache-Control:max-age = 60 Expires:Sat,01 Aug 2009 06:33:11 GMT Last-Modified:Thu,23 Nov 2006 17:44:53 GMT ETag:“97d620-44b-4565de15”Accept-Ranges :bytes Content-Length:1099 Connection:close Content-Type:text / html“
<?php
$curl_handle=curl_init();
$username = "";
$password = "";
$fullurl = "http://www.queensberry.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_URL, $fullurl);
$returned = curl_exec($ch);
curl_close ($ch);
var_dump($returned);
?>
答案 0 :(得分:8)
以下是解决方案: 试试这个,只需保持其他编码与上面相同......
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_URL, $fullurl);
$returned = curl_exec($ch);
curl_close ($ch);
var_dump($returned);
将CURLOPT_HEADER更改为0会使其仅返回页面内容。
答案 1 :(得分:2)
$fullurl
不应该是“https://www.queensberry.com”吗?
当我按照规定更改$fullurl
并运行代码时,var_dump
显示了“正在建设中”页面。
答案 2 :(得分:2)
如果您仍然需要标题,这意味着将CURLOPT_HEADER设置为0不是一个选项,您可以通过查找空行(两个CRLF)找到正文的开头。请参阅规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html
所以这应该做的工作:
$data = curl_exec($ch);
$start = strpos($data, "\r\n\r\n") + 4;
$body = substr($data, $start, strlen($data) - $start);
答案 3 :(得分:1)
我使用curl的getinfo查找标题的长度。然后对响应进行子串:
NULL