码迷,mamicode.com
首页 > Web开发 > 详细

php curl数据传输神器

时间:2018-04-30 19:51:04      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:次数   语法   orm   rar   错误   asmx   ftp服务   close   首页   

一、curl的概念:

curl (Client Url Library Functions)  

定义: curl is a command  line tool for transfering data with url syntax

即 使用 URL 语法传输数据的命令行工具

技术分享图片

CURL是访问网络资源的工具

二、curl的使用场景

1、访问网页资源 (例如:编写网页爬虫)

2、访问WebService 数据接口资源 (例如:动态获取数据接口,天气,号码归属地等)

3、下载FTP服务器里面的文件资源等 (例如:下载FTP服务器里面的文件)

所有的网络资源都可以用CRUL访问和下载到

三、在PHP中使用cUrl

windows: 在cmd中执行命令

 php -i  // 所有php的设置都会被打印出来, i 代表 infomations的意思

 然后 右键 -> 编辑 -> 查找->输入 cUrl ,可以看到类似如下信息:

技术分享图片

说明cUrl 可用,且版本为 7.25.0

Linux:输入命令:

php -i | grep cUrl

技术分享图片

 几乎所有的工具都需要经历:

去初始化它 -> 去使用它 -> 去关闭它

curl也是这样。

技术分享图片

curl_exec() 把发送请求和接收数据都一起做了。

四、使用示例

1、一个最简单的 curl 示例(编写一个网页爬虫,获取百度首页的 html)

$curl = curl_init(‘www.baidu.com‘);  // 初始化
curl_exec($curl);  // 执行
curl_close($curl); // 关闭

 

 这样子会得到百度首页的 html 代码,并且会直接输出,用浏览器显示的话,和输入www.baidu.com显示的内容一模一样。

2、对网页代码做一些修改(例如将百度改为慕课)

$url = ‘www.baidu.com‘;
$curl = curl_init();  // 初始化 curl
curl_setopt($curl,CURLOPT_URL,$url); // 设置访问的 url
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); // CURLOPT_RETURNTRANSFER 设为 tuue,表示执行结果不直接打印出来,以便对结果做一些后续的处理
$output = curl_exec($curl); //执行
curl_close($curl); // 关闭 curl
str_replace(‘百度‘,‘慕课‘,$output); // 对返回结果做替换

 

 3、访问 WebService 数据接口资源(查询深圳的天气)

使用的天气接口为 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ,虽说是免费的,但是有使用次数限制

$url = ‘http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName‘;
$data = ‘theCityName=北京‘;  // 多个参数用 & 连接
$httpHeader = array(
    ‘Content-type: application/x-www-form-urlencoded;charset=utf-8‘,  // 数据被编码为名称/值对的形式,字符集为utf-8
    ‘content-length: ‘.strlen($data), // post发送都需要指定一下数据的长度
);
$curl = curl_init();  // 初始化 curl
curl_setopt($curl,CURLOPT_URL,$url); // 设置访问的 url
curl_setopt($curl,CURLOPT_HEADER,0); // 不设置 header
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); // CURLOPT_RETURNTRANSFER 设为 tuue,表示执行结果不直接打印出来,以便对结果做一些后续的处理
// post请求,下面这 3 行是重点
curl_setopt($curl,CURLOPT_POST,true);  // 通过 post 的方式请求
curl_setopt($curl,CURLOPT_POSTFIELDS,$data); // 设置请求的参数
curl_setopt($curl,CURLOPT_HTTPHEADER,$httpHeader); // 设置 httpheader
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT‘]); //声明浏览器用于 HTTP 请求的用户代理头的值。简单来说,就是“声明用什么浏览器来打开目标网页”,当抓取网页资源不能正确返回结果时,可以加入这一项
$output = curl_exec($curl); //执行
if(! curl_errno($curl)){  // 如果执行的过程中出错了,将错误打印出来
    echo $output; // 返回的是一个 xml
    //$info = curl_getinfo($curl);  // 返回的是数组格式
    //print_r($info);
}else{
    echo ‘curl error:‘.curl_error($curl);
}
curl_close($curl); // 关闭 curl

 

php curl数据传输神器

标签:次数   语法   orm   rar   错误   asmx   ftp服务   close   首页   

原文地址:https://www.cnblogs.com/chrdai/p/8974059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!