libcurl - php的curl里面在获取页面html数据的时候能指定获取的字节数吗?
RT
本来用的 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选项,计量单位是字节,可以通过如下方式来设定:
<code>curl_setopt($ch, CURLOPT_RANGE, '0-799'); </code>
但是这个不一定管用的,它只是发送了一个请求头,具体如何返回数据还是由发送方决定的,如果发送方支持分片返回则会生效,否则还是完整返回。通过stream也可以实现,也是发送range的头信息,所以结果应该是一样的:
<code>$context = stream_context_create(array('http' => array ('header'=> 'Range: bytes=0-799'))); $data = file_get_contents("http://example.com/file.html", FALSE, $context); </code>
关于range header的rfc文档:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
可以这样..不过每次读取,有可能会超过你规定的数值,判断一下就好了.
<?php error_reporting(E_ALL); $data = ''; $url = 'http://segmentfault.com/q/1010000000482129'; $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $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
函数是不是更合适?
<code>$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>.*<\/title>/", $content, $title); </code>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu
