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

基于PHP的curl的知识小结

2013-12-23 16:00 232 查看
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。一般读取文件(URL)的方法是使用PHP内置的一些读文件函数,比如file_get_contents,file等;但是这些方法都只能进行简单的文件读取,不能实现复杂的功能:向URL POST数据、使用代理服务器、读取使用SSL协议的URL、URL登陆认证等。而cURL恰恰提供了对这些功能的支持。操作系统环境:Ubuntu12.04 X64在使用curl之前先确认是否已经安装并且开启来curl模块。如果没有安装或者开启curl模块,在使用curl的函数时候,会报错,函数没有定义。安装curl模块:apt-get install php5-curl

然后重启apache/etc/init.d/apache2 restart在phpinfo可以看到curl模块相对应的信息:

*****************************************************华华丽的分割线***********************************************下面我们来总结下curl常见的功能:建立cURL请求的方法:1.初始化使用curl_init方法初始化一个cURL句柄$curl = curl_init("http://www.baidu.com/");curl_init方法提供了一个可选参数URL,返回一个cURL句柄供curl_setopt(), curl_exec()和curl_close() 函数使用。
curl_setopt :设置一个cURL传输选项,或者使用curl_setopt_array批量设置一组参数。如果在curl_init中没有指定URL,则需要在curl_setopt中手工设置这个值,如果指定了URL,则CURLOPT_URL被自动设成这个值。$curl = curl_init();curl_setopt($curl,CURLOPT_URL,"http://www.baidu.com/");
curl_exec :执行一个cURL会话这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 。
curl_close:关闭一个cURL会话关闭一个cURL会话并且释放所有资源。cURL句柄curl也会被释放。
2.设置传输选项CURLOPT_RETURNTRANSFER 将 curl_exec()获取的信息以文件流的形式存在变量返回,还是直接输出。更多传输选项可以参考:http://php.net/manual/zh/function.curl-setopt.php
curl_getinfo($curl)获取一个cURL会话的信息。
curl_getinfo($curl)返回的数组中包括如下信息:"url" //资源网络地址"content_type" //内容编码"http_code" //HTTP状态码"header_size" //header的大小"request_size" //请求的大小"filetime" //文件创建时间"ssl_verify_result" //SSL验证结果"redirect_count" //跳转技术"total_time" //总耗时"namelookup_time" //DNS查询耗时"connect_time" //等待连接耗时"pretransfer_time" //传输前准备耗时"size_upload" //上传数据的大小"size_download" //下载数据的大小"speed_download" //下载速度"speed_upload" //上传速度"download_content_length"//下载内容的长度"upload_content_length" //上传内容的长度"starttransfer_time" //开始传输的时间"redirect_time"//重定向耗时
例如:我们设置curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1),即返回数据以文本流形式返回,不会在屏幕显示。<?php $ch = curl_init("http://www.baidu.com/"); echo "</br>"; $info = curl_getinfo($ch); echo "<pre>"; print_r ($info); echo "</pre>"; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); //echo $output; curl_close($ch);?>

运行下:php curl.php


确实没有在屏幕显示。。返回的信息已经存储在$output里面。现在我们来去掉 echo $output 的注释。再次运行curl.php


好吧,现在我们已经获取到了页面的代码,如果想实现自动采集信息,我们可以带页面的结构进行分析,利用正则表达式,提取到我们所需的信息。
当然,curl不仅仅是者点功能。curl可以:使用代理服务器;向URL POST数据;使用浏览器用户代理;访问SSL协议的URL。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: