PHP中使用curl入门教程


Posted in PHP onJuly 02, 2015

概述

在我的上一篇文章“curl和libcurl简介”中简单的给大家介绍了curl相关的知识。这篇文章向大家介绍一下PHP中的curl扩展。
尽管在上一篇文章中,对curl和libcurl做了区分,也解释了某些相关的概念。同时,也知道了PHP中的curl扩展其实是对libcurl的封装。但是,在这篇文章中,为了写起来方便,将不再对这两个概念进行区分,因此文章接下来提到的curl其实是指libcurl,希望不会把大家绕糊涂。
关于PHP中curl扩展这里就不再过多介绍了,大家可以查下文档。

安装curl

关于curl的安装,这里也不做过多的介绍。windows和linux都是一样的流程,根据平台选择相应的安装方式,然后在php.ini文件中开启curl扩展,与别的扩展的安装都是一样的。

PHP中使用curl的步骤

在PHP中,可以使用curl完成各种各样的功能,如抓取网页,文件的上传/下载、模拟登录等。但是这些功能的实现都是基于四个步骤完成的,所以curl的使用并不复杂。

使用curl时,主要分为以下四个步骤:

1.初始化一个curl实例—curl_init()
2.设置curl执行时的相关选项—curl_setopt()
3.执行curl查询—curl_exec()
4.关闭curl—curl_close()

在这四个步骤中,1、3、4步都很容易。最麻烦的就是2步,这一步设置curl的选项,这里有100多个不同的选项,要完成不同的功能,就要对这些选项进行组合。
下面对这四个步骤做一下说明:

1.初始化一个curl实例,这一步使用函数curl_init(),查看一下PHP手册,可以看到该函数的返回值是一个资源(resource)类型,我们需要使用一个变量来保存这个实例,因为后面的步骤都会用到这个实例。具体代码示例:

$curl=curl_init(); //输出resource(2, curl)

2.设置curl相关选项,设置curl选项使用函数curl_setopt()。该函数接受三个参数:第一个参数就是要设置的curl的实例也就是第一步中的那个实例,第二个参数要设置的选项,是一个预定义的常量,具体都有哪些选项,大家可以在手册里自行查阅。第三个参数是要设置的选项的具体值。
代码示例:

curl_setopt ($curl, CURLOPT_URL, "http://www.php.net");

3.执行curl查询,这一步使用函数curl_exec()。该函数接受一个参数,这个参数也是第1步中获取的实例。
代码示例:
curl_exec ($curl);

4.关闭当前curl,这一步使用函数curl_close()。该函数同样也是接受第1步中获取的curl实例作为参数。
代码示例:
curl_close($curl);

在PHP中使用curl一般都遵循这四个步骤,其中主要是通过对2步的不同设置来完成不同的功能,所以第2步是最麻烦的,有的甚至需要大家用心理解。

一个简单的curl代码实例
前面给大家介绍了使用curl的四个步骤,这里给大家简单演示一个抓取网页内容的实例,代码很简单,但是希望能帮助大家更好的理解curl。
抓取百度首页内容:

$curl=curl_init();

curl_setopt ($curl, CURLOPT_URL, "http://www.baidu.com");

$baidu=curl_exec($curl);

curl_close($curl);

运行这一段代码,页面将显示百度首页。

总结

截止到今天,写了五六篇博客了。很想把自己学习的知识记录下来,也很想跟大家分享,但是一直觉得自己的语言组织能力不是太好,不知道看到文章的人能不能看懂,希望以后在语言组织方面能不断进步吧。

PHP 相关文章推荐
php类
Nov 27 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
很让人受教的 提高php代码质量36计
Sep 05 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 #PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 #PHP
PHP获取文件夹大小函数用法实例
Jul 01 #PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 #PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 #PHP
PHP判断是否连接上网络的方法
Jul 01 #PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 #PHP
You might like
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
Python性能优化的20条建议
2014/10/25 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
Linux下python制作名片示例
2018/07/20 Python
Python 画出来六维图
2019/07/26 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
人事文员岗位职责
2015/02/04 职场文书
小学远程教育工作总结
2015/08/13 职场文书
nginx之内存池的实现
2022/06/28 Servers