php中curl的详细解说 【转载】

  这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感,

  本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用,

  好,废话不多说,我们先来认识下什么是cURL,可能还有很多同学没有听说过这个工具,我先来给大家简单介绍下什么是cURL:

  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
$url = 'http://www.abc.com/';
// $str = file_get_contents($url);

// 2 或是
$str = file($url);

// 3 或是
readfile($url);

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

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

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

<?php
$url="http://www.abc.com";

//1.初始化,创建一个新cURL资源
$ch = curl_init();

//2.设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);

//3.抓取URL并把它传递给浏览器
curl_exec($ch);

//4.关闭cURL资源,并且释放系统资源
curl_close($ch);

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

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

详见:http://blog.csdn.net/yanhui_wei/article/details/21530811

  看到了吧,只要在第二个函数之内设置这些选项就可以完成相应的功能,cURL的功能是灰常强大滴,大家可以尝试一下哦!

  例如,我们只想把获取到的内容输入到文件,而不是直接输出给浏览器,我们就可以使用CURLOPT_RETURNTRANSFER选项!

  这样在curl执行的时候,就会把页面的内容输出到文件当中,我们就可以完成采集等功能啦!

  效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出四倍以上,试想一下,我们

  要采集一个信息量特别庞大的站,运行效率的差别可想而知!

  不单单是效率上,稳定性上来说,curl也远比file_get_contents()函数要好很多!

  这就是强大的curl,下文将给大家详细介绍它的高级应用,我们可以模拟浏览器的post传值,甚至上传!

 

转载于:https://www.cnblogs.com/weishang/p/4909302.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值