有没有办法让PHP CURL函数获取网站的内容,但停在我们刚才问的字符上。我认为这种缓冲。
因此脚本没有调用整个页面
所以这样的计划:
: curl execution
<html>
->
->
->
-> Title Detected
: curl close
->
->
->
->
</ html>
请注意这不是DOM问题。但是当它发现我们问的时候如何卷曲停止。 这是我的代码:
function curl_download($Url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_REFERER, $Url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
如果cURL无法处理这个问题,fopen怎么样?你有一个例子吗? 先谢谢。也请给我你的示例代码,谢谢
答案 0 :(得分:0)
答案 1 :(得分:0)
以下是使用fsockopen()
的非常简单的示例。扩展它以满足您的需求。
$host = 'www.site.com';
$port = 80;
$sock = fsockopen($host, $port, $errno, $errstr, 30);
if (!$sock) {
die("Failed to connect. $errno: $errstr");
}
// write http request to socket:
$request = "GET /file.html HTTP/1.0\r\n"
."Host: $host\r\n"
."User-Agent: some-user-agent\r\n"
."Connection: close\r\n"
."\r\n";
fwrite($sock, $request);
$buffer = ''; // buffer for storing response
while (!feof($sock)) {
$buffer .= fgets($sock, 1024); // read 1024 bytes from socket, append to buffer
if (strpos($buffer, '</title>') !== false)) { // title was found
fclose($sock);
break;
}
}
因此,我们连接到远程主机上的HTTP服务器,发出一个简单的HTTP / 1.0请求,并一次读取1024字节的响应,直到检测到结束标题标记。一旦找到,连接就会关闭。
注意,即使我们没有从套接字读取整个响应,底层系统(PHP和OS套接字层)可能已经读取了更多(或可能全部取决于大小)响应。在任何一种情况下,您确实阻止PHP阅读大部分响应。如果页面非常大,提前关闭套接字可能会阻止实际接收大量数据。
希望有所帮助。