浅谈PHP中的数据传输CURL


Posted in PHP onSeptember 06, 2016

确认是否安装了CURL扩展

Linux下命令:

[root@fengniu020 ~]# php -i | grep -i curl
Additional .ini files parsed => /etc/php.d/curl.ini,
curl
cURL support => enabled
cURL Information => 7.19.7

curl操作步骤解析:

浅谈PHP中的数据传输CURL

CURL实例

1.一个简单的curl,抓取百度首页

2.下载一个网页并把内容中的“百度”替换为“摆渡”之后输出

3.调用WebService

一个简单的curl,抓取百度首页

<?php
$curl=curl_init('https://3water.com');
curl_exec($curl);
curl_close($curl);
?>

下载一个网页并把内容中的“百度”替换为“摆渡”之后输出

<?php
/**
 * 实例描述:在网络上下载一个网页并把内容中的“百度”替换为“摆渡”之后输出
 */
$curlobj = curl_init();      // 初始化
curl_setopt($curlobj, CURLOPT_URL, "http://www.baidu.com");    // 设置访问网页的URL
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);      // 执行之后不直接打印出来
$output=curl_exec($curlobj); // 执行
curl_close($curlobj);     // 关闭cURL
echo str_replace("百度","摆渡",$output);
?>

调用WebService

<?php
/**
 * 实例描述:通过调用WebService查询北京的当前天气
 * 下方接口,免费用户24小时内访问是有限制的,需要存储信息
 */
$data = 'theCityName=北京';
//$data = 'theCityName=北京&';//多个用&号连接
$curlobj = curl_init();  
curl_setopt($curlobj, CURLOPT_URL, "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName"); 
curl_setopt($curlobj, CURLOPT_HEADER, 0); 
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curlobj, CURLOPT_POST, 1); //POST方式
curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data); 
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8", 
  "Content-length: ".strlen($data)
  )); //HTTP请求头
curl_setopt ($curlobj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$rtn = curl_exec($curlobj);  
if(!curl_errno($curlobj)){
  // $info = curl_getinfo($curlobj); 
  // print_r($info);
  echo $rtn; 
} else {
 echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
?>

从FTP服务器下载一个文件到本地

<?php
/**
 * 代码实例-PHP-cURL实战
 * 实例描述:从FTP服务器下载一个文件到本地
 */
$curlobj = curl_init();  
curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.1.100/downloaddemo.txt"); 
curl_setopt($curlobj, CURLOPT_HEADER, 0); 
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curlobj, CURLOPT_TIMEOUT, 300); // times out after 300s
curl_setopt($curlobj, CURLOPT_USERPWD, "peter.zhou:123456");//FTP用户名:密码
// Sets up the output file
$outfile = fopen('dest.txt', 'wb');//保存到本地的文件名
curl_setopt($curlobj, CURLOPT_FILE, $outfile);

$rtn = curl_exec($curlobj); 
fclose($outfile); 
if(!curl_errno($curlobj)){
  // $info = curl_getinfo($curlobj); 
  // print_r($info);
  echo "RETURN: " . $rtn; 
} else {
 echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
?>

把本地文件上传到FTP服务器上

<?php
/**
 * 代码实例-PHP-cURL实战
 * 实例描述:把本地文件上传到FTP服务器上
 */
$curlobj = curl_init();  
$localfile = 'ftp01.php';//需要上传的文件
$fp = fopen($localfile, 'r');

curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.1.100/ftp01_uploaded.php");//上传后保存的文件名
curl_setopt($curlobj, CURLOPT_HEADER, 0); 
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curlobj, CURLOPT_TIMEOUT, 300); // times out after 300s
curl_setopt($curlobj, CURLOPT_USERPWD, "peter.zhou:123456");//FTP用户名:密码

curl_setopt($curlobj, CURLOPT_UPLOAD, 1);
curl_setopt($curlobj, CURLOPT_INFILE, $fp);//传输打开的文件
curl_setopt($curlobj, CURLOPT_INFILESIZE, filesize($localfile));//上传的文件大小
$rtn = curl_exec($curlobj); 
fclose($fp); 
if(!curl_errno($curlobj)){
  echo "Uploaded successfully."; 
} else {
 echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
?>

下载网络上面的一个HTTPS的资源

<?php
/**
 * 代码实例-PHP-cURL实战
 * 实例描述:下载网络上面的一个HTTPS的资源
 */
$curlobj = curl_init();      // 初始化
curl_setopt($curlobj, CURLOPT_URL, "https://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js");    // 设置访问网页的URL
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);      // 执行之后不直接打印出来

// 设置HTTPS支持
date_default_timezone_set('PRC'); // 使用Cookie时,必须先设置时区
curl_setopt($curlobj, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查从证书中检查SSL加密算法是否存在,设置为0就是终止从服务器端进行验证
curl_setopt($curlobj, CURLOPT_SSL_VERIFYHOST, 2); // 

$output=curl_exec($curlobj); // 执行
curl_close($curlobj);     // 关闭cURL
echo $output;
?>

以上这篇浅谈PHP中的数据传输CURL就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
C#静态方法与非静态方法实例分析
Sep 22 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
PHP实现懒加载的方法
Mar 07 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
php workerman定时任务的实现代码
Dec 23 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
PHP实现页面静态化的超简单方法
Sep 06 #PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 #PHP
PHP7 新特性详细介绍
Sep 06 #PHP
PHP会员找回密码功能的简单实现
Sep 05 #PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 #PHP
浅谈mysql_query()函数的返回值问题
Sep 05 #PHP
PHP针对多用户实现更换头像功能
Sep 04 #PHP
You might like
PHP 和 HTML
2006/10/09 PHP
逐步提升php框架的性能
2008/01/10 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
fgetcvs在linux的问题
2012/01/15 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
python如何输出反斜杠
2020/06/18 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
恶意软件的定义
2014/11/12 面试题
致长跑运动员广播稿
2014/01/31 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
Python 多线程处理任务实例
2021/11/07 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL