cURL可以使用URL的语法模拟浏览器来传输数据,

因为它是模拟浏览器,因此它同样支持多种协议,

FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:

HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,

下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理服务器,通过http代理服务器上传文件

到FTP服务器等等。

这就是我们为什么要使用cURL的原因!

使用cURL完成简单的请求主要分为以下四步:

1.初始化,创建一个新cURL资源

2.设置URL和相应的选项

3.抓取URL并把它传递给浏览器

4.关闭cURL资源,并且释放系统资源

我们来采集一个页面,通常情况下,我们会使用file_get_contents()函数来获取:

像这样:

<?php$str = file_get_contents('http://bbs.lampbrother.net');//或者是:$str = file("http://bbs.lampbrother.net");//或者是:readfile("http://bbs.lampbrother.net");?>


这样我们会发现,我们没有办法有效地进行错误处理,更重要的是我们没有办法完成一些高难度的任务:

如:处理cookies,验证,表单提交,文件上传等等。

好,现在我们来用代码完成上述cURL的四步:

<?php//1.初始化,创建一个新cURL资源$ch = curl_init();//2.设置URL和相应的选项curl_setopt($ch, CURLOPT_URL, "http://yusure.cn/");curl_setopt($ch, CURLOPT_HEADER, 0);//3.抓取URL并把它传递给浏览器
$ch = curl_init();//2.设置URL和相应的选项curl_setopt($ch, CURLOPT_URL, "http://yusure.cn/");curl_setopt($ch, CURLOPT_HEADER, 0);//3.抓取URL并把它传递给浏览器curl_exec($ch);//4.关闭cURL资源,并且释放系统资源curl_close($ch);?>


上述四步中,其中第二步最为关键,可以设置一些高级选项:

例如上例中的CURLOPT_URL和CURLOPT_HEADER,分别代表“需要获取的URL地址”和“启用时会将头文件的信息作为数据流输出”,这些只是冰山一角,我们还可以设置很多选项: