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; ?>
输出效果如下:
以下是一些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 强制获取新连接,替换缓存中的连接。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。