libcurl-php的curl里面在获取页面html数据的时候能指定获取的字节数吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了libcurl-php的curl里面在获取页面html数据的时候能指定获取的字节数吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1880字,纯文字阅读大概需要3分钟。
内容图文
![libcurl-php的curl里面在获取页面html数据的时候能指定获取的字节数吗?](/upload/InfoBanner/zyjiaocheng/236/581e8d7e3b5d4c1dbf05f7931ee56544.jpg)
本来用的 fopen + fread($fp,读取字节数) 获取数据 SAE 不支持 就想改为curl
我只需要匹配出来title的值就行 去文件的前 800字节就ok了,curl参数众多,不知道该设置哪个。
毕竟获取整个html文件会消耗大量时间,只要前800字节就行,这样应该会节省点时间吧,我用microtime 测试出来的时间差别不大但是还是有差别的
回复内容:
RT
本来用的 fopen + fread($fp,读取字节数) 获取数据 SAE 不支持 就想改为curl
我只需要匹配出来title的值就行 去文件的前 800字节就ok了,curl参数众多,不知道该设置哪个。
毕竟获取整个html文件会消耗大量时间,只要前800字节就行,这样应该会节省点时间吧,我用microtime 测试出来的时间差别不大但是还是有差别的
cURL有一个range选项,计量单位是字节,可以通过如下方式来设定:
curl_setopt($ch, CURLOPT_RANGE, '0-799');
但是这个不一定管用的,它只是发送了一个请求头,具体如何返回数据还是由发送方决定的,如果发送方支持分片返回则会生效,否则还是完整返回。通过stream也可以实现,也是发送range的头信息,所以结果应该是一样的:
$context = stream_context_create(array('http' => array ('header'=> 'Range: bytes=0-799')));
$data = file_get_contents("http://example.com/file.html", FALSE, $context);
关于range header的rfc文档:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
可以这样..不过每次读取,有可能会超过你规定的数值,判断一下就好了.
$url,
CURLOPT_WRITEFUNCTION => 'receivePartial',
));
curl_exec($ch);
curl_close($ch);
function receivePartial($ch, $chunk) {
global $data;
$data .= $chunk;
$len = strlen($chunk);
echo 'had receive ', $len, ' bytes', PHP_EOL;
//判断每次读取,如果总数大于1000,就不再往下读了.
if (strlen($data) >= 1000) {
return -1;
}
//返回值是告知CURL,是否已够了,要不要再读啦.
return $len;
}
echo $data;
根据你只想取得页面 title
的需求,使用 file_get_contents
函数是不是更合适?
$content = file_get_contents('http://www.baidu.com', false, null, -1, 800);
if(mb_detect_encoding($content) == 'GB2312')
$content = iconv('GB2312', 'UTF-8', $content);
preg_match("/.*<\/title>/", $content, $title);
内容总结
以上是互联网集市为您收集整理的libcurl-php的curl里面在获取页面html数据的时候能指定获取的字节数吗?全部内容,希望文章能够帮你解决libcurl-php的curl里面在获取页面html数据的时候能指定获取的字节数吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。