我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

PHP curl简单采集图片并生成代码(附curl函数参数说明)

更新时间:2019-02-15 16:10:57 作者:摘天上的星星

今天给大家分享一篇php curl 简单图片采集与编码生成(附curl函数参数说明)的文章,我觉得内容还不错,现在分享给大家,有很好的参考价值,有需要的朋友可以关注我看看。

突然用到了好多年前的代码,所以做了这个笔记(这里的代码是用来定位内部错误位置的,不是http代码)

2100,'status'=>'error','msg'=>'未知错误!'];
 $imgs= ['image/jpeg'=>'jpeg',
        'image/jpg'=>'jpg',
        'image/gif'=>'gif',
        'image/png'=>'png',
        'text/html'=>'html',
        'text/plain'=>'txt',
        'image/pjpeg'=>'jpg',
        'image/x-png'=>'png',
        'image/x-icon'=>'ico'
  ];
 if(!stristr($url,'http')){
 $msg['code']= 2101;
 $msg['msg'] = 'url地址不正确!'; 
 return $msg;
 } 
 $dir= pathinfo($url);
 //var_dump($dir);
 $host = $dir['dirname'];
 $refer= $host.'/';
 $ch = curl_init($url);
 curl_setopt ($ch, CURLOPT_REFERER, $refer); //伪造来源地址
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回变量内容还是直接输出字符串,0输出,1返回内容
 curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);//在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出
 curl_setopt($ch, CURLOPT_HEADER, 0); //是否输出HEADER头信息 0否1是
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //超时时间
 $data = curl_exec($ch);
 //$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE); 
 //$httpContentType = curl_getinfo($ch,CURLINFO_CONTENT_TYPE);
 $info = curl_getinfo($ch);
 curl_close($ch);
 $httpCode = intval($info['http_code']);
 $httpContentType = $info['content_type'];
 $httpSizeDownload= intval($info['size_download']);
 if($httpCode!='200'){
 $msg['code']= 2102;
 $msg['msg'] = 'url返回内容不正确!';
 return $msg;
 }
 if($type>0 && !isset($imgs[$httpContentType])){
 $msg['code']= 2103;
 $msg['msg'] = 'url资源类型未知!';
 return $msg;
 }
 if($httpSizeDownload<1){
 $msg['code']= 2104;
 $msg['msg'] = '内容大小不正确!';
 return $msg;
 }
 $msg['code'] = 200;
 $msg['status']='success';
   $msg['msg']  = '资源获取成功';
 if($type==0 or $httpContentType=='text/html') $msg['data'] = $data;
 $base_64 = base64_encode($data);
 if($type==1) $msg['data'] = $base_64;
 elseif($type==2) $msg['data'] = "data:{$httpContentType};base64,{$base_64}";
 elseif($type==3) $msg['data'] = "";
 else $msg['msg'] = '未知返回需求!'; 
 unset($info,$data,$base_64);
 return $msg;
}
$msg = curl_url($url,3);
if($msg['status']=='success') echo $msg['data'];
die;
?>

输出效果如下:

php返回图片_php返回文件流_php 返回图片流

以下是一些curl函数参数的说明:

CURL 库方法

名称 描述

关闭 curl 会话

复制 curl 连接资源的所有内容和参数

返回包含当前会话错误消息的数值。

返回包含当前会话错误消息的字符串。

执行 curl 会话

获取有关 curl 连接资源句柄的信息

初始化 curl 会话

e向 curl 批处理会话添加单独的 curl 句柄资源

关闭批处理资源

解析 curl 批处理句柄

t 返回所获得输出的文本流

获取当前解析的curl的相关传输信息

初始化 curl 批处理资源

ndle 从 curl 批处理句柄资源中删除一个句柄资源

所有带有 cURL 的,然后可以是“”

以数组形式设置 curl 的会话参数

设置 curl 的会话参数

获取curl相关版本信息

()范围

名称 描述

当您将文件上传到远程站点时,此选项会告诉 PHP 您正在上传的文件的大小。

如果您希望 CURL 报告所有意外情况,请将此选项设置为非零值。

如果您想在输出中包含标题,请将此选项设置为非零值。

如果您不希望 PHP 显示 CURL 传输的进度条,请将此选项设置为非零值。注意:PHP 会自动将此选项设置为非零值,您只应在调试时更改此选项。

如果不想在输出中包含正文部分,请将此选项设置为非零值。

如果希望 PHP 在发生错误(返回的 HTTP 代码大于或等于 300)时不显示页面,请将此选项设置为非零值。默认行为是返回正常页面,忽略代码。

如果您希望 PHP 准备上传,请将此选项设置为非零值。

如果您希望 PHP 执行常规 HTTP POST,请将此选项设置为非零值。此 POST 属于常规 /x-www-from- 类型,最常用于 HTML 表单。

通过将此选项设置为非零值,PHP 将列出 FTP 目录名称。

将此选项设置为非零值将导致 PHP 应用远程文件而不是覆盖它。

将此选项设置为非零值,PHP 将在您的 ~./netrc 文件中查找您要连接的远程站点的用户名和密码。

ON 将此选项设置为非零值(如“:”),服务器将把它作为 HTTP 标头的一部分发送(请注意,这是递归的,PHP 将发送如“:”之类的标头)。

将此选项设置为非零值,即可使用 HTTP 上传文件。必须设置和选项才能上传文件。

通过将此选项设置为非零值,PHP 将完全不考虑 CURL 函数。

设置一个长整数作为最大持续时间(以秒为单位)。

MIT 设置一个长整数来控制传输的字节数。

ME设置一个长整数来控制需要多少秒才能传输MIT指定的字节数。

传递一个包含字节偏移地址(要移动到的起始形式)的长整数参数。

传递一个包含 SSL 版本的长参数。默认情况下,PHP 将尝试自行确定它,为了更安全,您必须手动设置它。

N 传递一个长参数,指定如何处理该参数。您可以将此参数设置为 N 或 E。这仅用于 HTTP。

传递自 1970 年 1 月 1 日以来的秒数。此时间将用作选项的指定值,或用作默认值。

这是您要使用 PHP 检索的 URL。您也可以在初始化 with() 函数时设置此选项。

传递[]:[]形式的字符串,使用PHP进行连接。

传递格式为 []:[] 的字符串来连接到 HTTP 代理。

传递您要指定的范围。格式应为“XY”,其中不包括 X 或 Y。HTTP 传输还支持多个范围,以逗号分隔(XY,NM)。

将字符串作为 HTTP“POST”操作的所有数据传递。

HTTP 请求中包含“”标头的字符串。

HTTP 请求中的“user-agent”标头中包含的字符串。

传递包含 ftp“POST”命令要使用的 IP 地址的字符串。POST 命令告诉远程服务器连接到我们指定的 IP 地址。此字符串可以是 IP 地址、主机名、网络接口名称(在 UNIX 下)或“-”(使用系统默认 IP 地址)。

传递包含 HTTP 连接的标头。

传递包含 PEM 格式的证书的字符串。

D 传递一个包含使用证书所需密码的字符串。

传递一个包含数据的文件的名称字符串。此文件可以采用存储在文件中的格式或 HTTP 样式标头。

执行 HTTP 请求时,传递要使用的 GET 或 HEAD。这用于执行 或 ,更多 , HTTP 。注意:除非您确定您的服务器支持该命令,否则请不要执行此操作。以下选项需要文件描述(使用 fopen() 函数获取)

此文件将是您放置传输的输出文件的地方,默认情况下它是。

此文件是您发送的输入文件。

该文件包含您的输出的标题。

此文件写得有错误,用于获取需要登录的页面示例,目前的做法是每次登录一次,有需要的可以自行改进。

自动设置中的信息

启用 ER 后,ER 将取回数据

当启用 N 时,curl 只会传递一个,而忽略其他。默认情况下,curl 会将全部返回给服务器。这些用于判断服务器是否有效。

启用后,Unix 换行符将转换为回车换行符。

启用后,将启用全局 DNS 缓存。这是线程安全的,默认为 true。

显示 HTTP 状态代码。默认行为是忽略数字小于或等于 400 的 HTTP 消息。

启用后,将尝试修改远程文档中的信息。结果信息将通过 () 函数的选项返回。

当开启 ON 时,服务器返回的“:”会放在对服务器的递归返回中,可以限制递归返回的次数。

交互完成后强制断开连接,不可重复使用。

T 强制获取新连接,替换缓存中的连接。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/3464.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线