您的位置:首页 > 编程语言 > PHP开发

PHP cURL扩展

2016-04-19 00:00 633 查看
摘要: PHP cURL 抓取网页

使用cURL完成简单的请求主要分为以下四步:
1.初始化,创建一个新cURL资源
2.设置URL和相应的选项
3.抓取URL并把它传递给浏览器
4.关闭cURL资源,并且释放系统资源

首先,本来我们抓取一个网页,使用file_get_contents()函数来获取

$resourse = file_get_contents('http://www.baidu.com');


$resourse = file('http://www.baidu.com');


$resourse = readfile('http://www.baidu.com');
但是,这样我们会发现,没有办法有效地进行错误处理,更没办法进行高难度任务,如:文件上传、处理cookie、表单提交、验证等。

cURL 函数

curl_close — 关闭一个cURL会话
void curl_close ( resource ch)

curl_copy_handle — 复制一个cURL句柄和它的所有选项
resource curl_copy_handle ( resource
$ch
)

curl_errno — 返回最后一次的错误号
int curl_errno ( resource ch)
如果没有错,则返回0

curl_error — 返回一个保护当前会话最近一次错误的字符串
string curl_error ( resource ch)

curl_escape — URL encodes the given string
string curl_escape ( resource
$ch
, string
$str
)
失败时返回false

curl_exec — 执行一个预先定义好的cURL会话
mixed curl_exec ( resource ch)
如果失败了,就返回false,注意使用 === false 来判断。如果没有错,则返回‘’。

curl_file_create — Create a CURLFile object

curl_getinfo — 获取一个cURL连接资源句柄的信息
string curl_getinfo ( resource ch [, int opt])
opt参数有很多,是指定返回要查看的数据,CURLINFO_*

curl_init — 初始化一个cURL会话
resource curl_init ( [string url])

curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄
int curl_multi_add_handle ( resource
$mh
, resource
$ch
)
成功时返回0,失败时返回
CURLM_XXX
之一的错误码。

curl_multi_close — 关闭一组cURL句柄
void curl_multi_close ( resource
$mh
)

curl_multi_exec — 运行当前 cURL 句柄的子连接
int curl_multi_exec ( resource
$mh
, int
&$still_running
)
still_running
:一个用来判断操作是否仍在执行的标识的引用。

curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流

curl_multi_info_read — 获取当前解析的cURL的相关传输信息

curl_multi_init — 返回一个新cURL批处理句柄
resource curl_multi_init ( void )
失败返回false

curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
int curl_multi_remove_handle ( resource
$mh
, resource
$ch
)

curl_multi_select — 等待所有cURL批处理中的活动连接
int curl_multi_select ( resource
$mh
[, float
$timeout
= 1.0 ] )

curl_multi_setopt — Set an option for the cURL multi handle

curl_multi_strerror — Return string describing error code

curl_pause — Pause and unpause a connection
int curl_pause ( resource
$ch
, int
$bitmask
)

curl_reset — Reset all options of a libcurl session handle
void curl_reset ( resource
$ch
)

curl_setopt_array — 为cURL传输会话批量设置选项

curl_setopt — 设置一个cURL传输选项
bool curl_setopt ( resource ch, string option, mixed value)
这个函数是最重要的,一切玄妙均在此。

CURLOPT_AUTOREFERER
当根据Location:重定向时,自动设置header中的Refer:信息
CURLOPT_COOKIESESSION启用时cURL会仅仅传递一个session cookie,忽略其他cookie,默认情况下从URL会将所有cookie返回给服务器。session cookie指用来判断服务器端的session是否有效而存在的cookie。
CURLOPT_FOLLOWLOCATION启用将服务器返回的“Location:”放在header中,递归地返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。
CURLOPT_HEADER
启用时将头文件的信息作为数据流输出
CURLOPT_RETURNTRANSFER将curl_exc()获取的信息以文件流的形式返回,而不是直接输出。
CURLOPT_INFILESIZE设定上传文件的大小,单位是字节
CURLOPT_MAXCONNECTS允许的额最大连接数量,超过会通过CURLOPT_CLOSEPOLICY决定应该停止那些连接
CURLOPT_MAXREDIRS指定HTTP重定向的最多数量
CURLOPT_COOKIEFILE包含cookie数据的文件名,cookie的文件格式可以使netscape格式,或者只是纯HTTP头部信息存入文件
CURLOPT_COOKIEJAR连接结束后保存cookie信息的文件
CURLOPT_ENCODING
HTTP请求头中“Accept-Encoding”的值,支持的编码有identity,deflate和gzip。如果为空字符串,表示支持所有编码类型。
CURLOPT_POSTFILEDS
全部数据使用HTTP协议中的post操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。这个参数通过urlencoded后的字符串类似于'paral=val1¶l2=val2'或使用一个以字段名为键值
CURLOPT_RANGE
以“X-Y”的形式组成,其中X和Y都是可选项获取数据的范围,单位是字节,HTTP传输线程也支持几个这样的而重复项中间用逗号分隔如‘X-Y,N-M’
CURLOPT_REFERER
HTTP请求头的referer内容
CURLOPT_HTTPHEADER
用来设置HTTP头字段的数组
CURLOPT_FILE
设置输出文件的位置,值是一个资源类型,默认为STDOUT(浏览器)
CURLOPT_INFILE
在上传文件的时候需要读取的文件地址,值是一个资源类型
CURLOPT_HEADERFUNCTION
设置一个回调函数,其有两个参数:cURL的资源句柄,输出的header数据。header数据的输出必须依赖这个函数,返回已经写入的数据大小。

CURLOPT_WRITEFUNCTION
拥有两个参数的回调函数:会话句柄,HTTP响应头信息的字符串。使用此回调函数,将自行处理响应头信息。响应头信息是整个字符串。设置返回值为精确的已写入字符串长度。发生错误时传输线程终止。
CURLOPT_COOKIE
设定HTTP请求中的cookie,多个cookie用分号分隔,分号后带一个空格(例如,“fruit=apple; color=red”)
curl_share_close — Close a cURL share handle

curl_share_init — Initialize a cURL share handle

curl_share_setopt — Set an option for a cURL share handle.

curl_strerror — Return string describing the given error code

curl_unescape — Decodes the given URL encoded string

curl_version — 获取cURL版本信息
string curl_version ( void )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: