PHP curl简单用法举例和相关函数介绍
一、PHP curl抓取代码编写流程:
使用PHP curl执行抓取请求分为下面基本四步:- 使用 curl_init() 函数创建一个curl句柄;
- 使用 curl_setopt() 函数为curl句柄设置相应选项,php curl的丰富功能依靠此函数的设置来实现;
- 使用 curl_exec() 函数执行抓取请求;
- 使用 curl_close() 函数关闭curl句柄,释放内存;
二、PHP curl最基本用法:
下面使用简单的例子,通过使用php curl抓取本站首页源代码长度,介绍php curl的基本用法。注意CURLOPT_RETURNTRANSFER选项十分重要,作用为执行curl_exec函数时,是否返回curl传输内容到变量,默认为否,会直接将内容输出网页。<?php // 创建一个curl句柄 $ch = curl_init(); // 设置访问的URL curl_setopt($ch, CURLOPT_URL, "http://aiezu.com"); // 将curl请求执行时,将结果返回,而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 执行curl请求,返回结果到变量 $html = curl_exec($ch); // 关闭curl句柄 curl_close($ch); echo strlen($html);运行结果:
96161
三、PHP curl GET请求和POST请求:
1、php curl get请求:
<?php $data = array('sex'=>1, 'age'=>18); $url = sprintf("http://aiezu.com/test.php?%s", http_build_query($data)); // $url: http://aiezu.com/test.php?sex=1&age=18 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec($ch); curl_close($ch); echo $html;输出结果:
[REQUEST_METHOD]: GET $_GET: Array ( [sex] => 1 [age] => 18 )
2、php curl post 提交数据:
<?php $data = array('name'=>'爱E族', 'domain'=>'aiezu.com'); $url = "http://aiezu.com/test.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 告诉curl使用POST的方式提交 curl_setopt($ch, CURLOPT_POST, 1); // 设置要POST提交的数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $html = curl_exec($ch); curl_close($ch); echo $html;输出结果:
[REQUEST_METHOD]: POST [CONTENT_LENGTH]: 250 [CONTENT_TYPE]: multipart/form-data; boundary=----------------------------39f5fe9c583c $_POST: Array ( [name] => 爱E族 [domain] => aiezu.com )
四、PHP curl组件相关函数:
PHP curl组件相关函数功能介绍:函数名 | 函数介绍 | |
---|---|---|
基 础 函 数 | curl_init | 【常用】初始化一个curl会话,返回一个curl句柄; |
curl_setopt | 【常用】设置curl选项,具体选项介绍请参考php官方介绍:curl_setopt; | |
curl_setopt_array | 【常用】使用数组的方式批量设置curl选项; | |
curl_copy_handle | 克隆一个curl句柄和它的所有选项; | |
curl_exec | 【常用】执行curl会话; | |
curl_pause | 暂停并取消暂停一个连接(PHP 5.5以上版本); | |
curl_reset | 将curl句柄的所有curl选项重置为默认值(PHP 5.5以上版本); | |
curl_getinfo | 获取curl最后会话信息,包含消耗时间、上传下载字节数、传输速度等信息; | |
curl_errno | 返回curl会话最后一次的数字错误代码; | |
curl_error | 返回curl会话最后一次的字符串错误描述; | |
curl_strerror | 通过curl数字错误代码返回字符串描述(PHP 5.5以上版本); | |
curl_close | 【常用】关闭curl会话; | |
curl_escape | 对指定字符串进行URL编码(PHP 5.5以上版本); | |
curl_unescape | 对指定字符串进行URL解码(PHP 5.5以上版本); | |
curl_version | 以数组的形式返回php curl版本信息; | |
批 处 理 | curl_multi_init | 创建一个curl批处理句柄(并发请求); |
curl_multi_add_handle | 向curl批处理句柄中添加单独的curl句柄; | |
curl_multi_remove_handle | 从curl批处理句柄中移除某个curl句柄; | |
curl_multi_setopt | 为curl批处理句柄设置选项; | |
curl_multi_exec | 执行curl批处理句柄; | |
curl_multi_info_read | 尝试从curl批处理句柄中获取 新curl子请求的完成信息; | |
curl_multi_getcontent | 读取curl批处理句柄中curl子句柄的请求返回内容; | |
curl_multi_close | 关闭curl批处理句柄; | |
curl_multi_select | 等待所有curl批处理中的活动连接; | |
curl_multi_strerror | 通过curl批处理数字错误代码返回字符串描述(PHP 5.5以上版本); | |
共 享 句 柄 | curl_share_init | 初始化一个curl共享句柄(PHP 5.5以上版本); |
curl_share_setopt | 为 curl共享句柄设置选项(PHP 5.5以上版本); | |
curl_share_close | 关闭curl共享句柄(PHP 5.5以上版本); | |
其 他 | curl_file_create | 创建一个curlfile对象(PHP 5.5以上版本); |
五、参考资料:
- php官网关于curl组件介绍:http://php.net/curl
- php curl选项官方介绍:http://php.net/manual/zh/function.curl-setopt.php
- php curl选项爱E族整理:https://aiezu.com/article/php_curl_curl_setopt_sets.html