php curl的使用
我们来采集一个页面,通常情况下,我们会使用file_get_contents()函数来获取:
<?php $str = file_get_contents('http://www.baidu.com'); //或者是: $str = file("http://www.baidu.com"); //或者是: readfile("http://www.baidu.com"); ?>
这样我们会发现,我们没有办法有效地进行错误处理,更重要的是我们没有办法完成一些高难度的任务:
如:处理cookies,验证,表单提交,文件上传等等。这时候我们需要学习一下curl,来帮助自己实现这些复杂的功能。
通过curl_setopt()函数可以方便快捷的抓取网页,curl_setopt 是php的一个扩展库。使用条件:需要在php.ini 中配置开启。(PHP 4 >= 4.0.2)
//取消下面的注释
extension=php_curl.dll
GET数据案例:
//1.初始化,创建一个新cURL资源
$ch = curl_init(); //2.设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com"); //需要获取的URL地址
//curl_setopt($ch, CURLOPT_HEADER, 1); //启用时会将头文件的信息作为数据流输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
//3.抓取URL并把它传递给浏览器
$data =curl_exec($ch); //4.关闭cURL资源,并且释放系统资源
curl_close($ch);
var_dump($data);
POST数据案例:
$url = "http://localhost/demo.php";
$post_data = array ("username" => "bob","key" => "12345");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post数据
curl_setopt($ch, CURLOPT_POST, 1);
// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$data = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($data);
获取access_token:
1、新建一个access_token.json文件,要不然第一次运行会报错,
2、新建一个demo.php,写自己APPID、SECRET
<?php
function getJsApiTicket(){
$data = json_decode(file_get_contents("access_token.json"));
if (@$data->expire_time < time()) {
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
$res = json_decode(httpGet($url));
if (isset($res->access_token)) {
$access_token = $res->access_token;
} else {
$access_token = false;
}
if ($access_token) {
$datas=(object)[];
$datas->expire_time = time() + 60;
$datas->access_token = $access_token; $fp = fopen("access_token.json", "w+");
fwrite($fp, json_encode($datas));
fclose($fp);
}
} else {
$access_token = $data->access_token;
} return $access_token;
} function httpGet($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl);
curl_close($curl); return $res;
} echo getJsApiTicket();
?>
总体来说,file_get_contents()用来处理本地文件的数据合适,curl用来获取远程的数据比较合适。。。。
php curl的使用的更多相关文章
- 在PowerShell中使用curl(Invoke-WebRequest)
前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...
- php中实现的一个curl批处理的实例
curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...
- PHP curl 函数
转载http://sunking.sinaapp.com/archives/111 最近使用curl的时候,发现了一个比较好用的函数,当然是初级者适用的一个函数,就是curl_getinfo(), 在 ...
- curl -w,–write-out参数详解
顾名思义,write-out的作用就是输出点什么.curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出. 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{varia ...
- CURL HELP
CURL下载 在windows的系统环境变量中,将CURL的路径(curl.exe存放的路径)复制到"Path"变量的结尾 Usage: curl [options...] < ...
- curl的登录总结
demo1 <?php $curl=curl_init('http://www.baidu.com'); curl_exec($curl); curl_close($curl); ?> c ...
- php curl获取的数据不直接输出
curl获取页面内容,不直接输出到页面 必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true curl_setopt($ch, CURLOPT_RETURNTRANSFER ...
- PHP的CURL
使用CURL完成一个请求: 初始化连接句柄 设置CURL选项 执行并获取结果 释放CURL连接句柄 发送GET请求 function doGetRequest($url,$data,$timeout ...
- PHP curl报错“Problem (2) in the Chunked-Encoded data”解决方案
$s = curl_init(); curl_setopt($s, CURLOPT_POST, true); curl_setopt($s, CURLOPT_POSTFIELDS, $queryStr ...
- php获得远程信息到本地使用的3个函数:file_get_contents和curl函数和stream_get_contents
1:file_get_contents echo file_get_contents("http://www.php.com/index.php"); 2:curl funct ...
随机推荐
- Daily Scrum 10.26
虽然是星期六,大家也没有丝毫懈怠,但由于其他各科也已经布置了相应的大作业,我们组投入在软工作业上的时间也是有一定限度的.由于这次任务较重,今日的完成量只有一部分,剩余的留为明天继续. 下表是今日完成工 ...
- 三层架构dal 层基本代码 非查询/查询
DAL 数据链路层 非查询/查询 using System;using System.Collections.Generic;using System.Linq;using System.Text;u ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- linux应用于发展(下)
X windows的特点 1.独立于操作系统. 2.网络特性. 3.源码开源. Unix图形环境主要还是CDE linux主要还是在网络应用和嵌入式上使用较多. 娱乐办公什么的去windows吧. 网 ...
- java swing 中的FileDialog
1.FileDialog使用方法: FileDialog fd=new FileDialog(new Frame(),"测试",FileDialog.LOAD); Filenam ...
- BOM&Navigator对象
<!-- BOM:Brower Object Model 浏览器对象模型 这个模型方便操作浏览器 浏览器对应的对象就是windows对象,这个可以通过查阅DHTML API获得 --> & ...
- Date类型-演示JS中的日期
<script type="text/javascript"> /* *演示JS中的日期 */ var date = new Date(); document.writ ...
- 国内docker镜像
daocloud:https://www.daocloud.io/ 网易蜂巢:https://c.163.com/
- 一些IT中的工具介绍【转】
1. 史上最全github使用方法:github入门到精通 2. Git教程 3. GIT与GitHub使用简介 简单来说,git是一种版本控制系统.跟svn.cvs是同级的概念.github是一 ...
- tomcat服务重启linux
1杀掉tomcat 进程 用ssh登陆到服务器 lsof -i:8080 //找到端口 ps -ef|grep tomcat kill -9 端口 2找到tomcat目下的start ...