一波PHP中cURL库的常见用法代码示例


Posted in PHP onMay 06, 2016

php 的CURL是不错的功能,下面收藏几段不错的片段

0、基本例子
一般流程:

$to_url=$_GET['url'];
print_r($_GET);
if(substr($to_url,0,1)=='/'){
 $to_url="http://www.amazon.com".$to_url;
}
echo $to_url;
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $to_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
$output=preg_replace("#href=\"#","href=\"http://in2.qq-ex.com/amazon.php?url=",$output);
// 释放curl句柄
curl_close($ch);
echo $output;
// 指定代理地址
curl_setopt($ch, CURLOPT_PROXY, '11.11.11.11:8080');
// 如果需要的话,提供用户名和密码
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'user:pass');

1、测试网站是否运行正常

if (isDomainAvailible('http://gz.itownet.cn')) 
  { 
    echo "Up and running!"; 
  } 
  else 
  { 
    echo "Woops, nothing found there."; 
  } 
 
  //returns true, if domain is availible, false if not 
  function isDomainAvailible($domain) 
  { 
    //check, if a valid url is provided 
    if(!filter_var($domain, FILTER_VALIDATE_URL)) 
    { 
      return false; 
    } 
 
    //initialize curl 
    $curlInit = curl_init($domain); 
    curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10); 
    curl_setopt($curlInit,CURLOPT_HEADER,true); 
    curl_setopt($curlInit,CURLOPT_NOBODY,true); 
    curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true); 
 
    //get answer 
    $response = curl_exec($curlInit); 
 
    curl_close($curlInit); 
 
    if ($response) return true; 
 
    return false; 
  }

2、可以代替file_gecontents的操作

function file_get_contents_curl($url) { 
 $ch = curl_init(); 
 
 curl_setopt($ch, CURLOPT_HEADER, 0); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser. 
 curl_setopt($ch, CURLOPT_URL, $url); 
 
 $data = curl_exec($ch); 
 curl_close($ch); 
 
 return $data; 
}

3、保存某个网站下的所有图片

function getImages($html) { 
 $matches = array(); 
 $regex = '~http://somedomain.com/images/(.*?)\.jpg~i'; 
 preg_match_all($regex, $html, $matches); 
 foreach ($matches[1] as $img) { 
  saveImg($img); 
 } 
} 
 
function saveImg($name) { 
 $url = 'http://somedomain.com/images/'.$name.'.jpg'; 
 $data = get_data($url); 
 file_put_contents('photos/'.$name.'.jpg', $data); 
} 
 
$i = 1; 
$l = 101; 
 
while ($i < $l) { 
 $html = get_data('http://somedomain.com/id/'.$i.'/'); 
 getImages($html); 
 $i += 1; 
}

4、FTP应用

// open a file pointer 
$file = fopen("/path/to/file", "r"); 
 
// the url contains most of the info needed 
$url = "ftp://username:password@mydomain.com:21/path/to/new/file"; 
 
$ch = curl_init(); 
 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 
// upload related options 
curl_setopt($ch, CURLOPT_UPLOAD, 1); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file")); 
 
// set for ASCII mode (e.g. text files) 
curl_setopt($ch, CURLOPT_FTPASCII, 1); 
 
$output = curl_exec($ch); 
curl_close($ch);

5、使用curl发送JSON数据

$data = array("name" => "Hagrid", "age" => "36");                                   
$data_string = json_encode($data);                                           
  
$ch = curl_init('http://api.local/rest/users');                                    
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                    
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                    
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                      
  'Content-Type: application/json',                                         
  'Content-Length: ' . strlen($data_string))                                     
);                                                           
  
$result = curl_exec($ch);
PHP 相关文章推荐
PHP生成带有雪花背景的验证码
Oct 09 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 PHP
PHP实现的简单分页类及用法示例
May 06 #PHP
PHP实现的多文件上传类及用法示例
May 06 #PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 #PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 #PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 #PHP
PHP图片加水印实现方法
May 06 #PHP
php数组冒泡排序算法实例
May 06 #PHP
You might like
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
PDO::rollBack讲解
2019/01/29 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
python最长回文串算法
2018/06/04 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
Java servlet面试题
2012/03/04 面试题
俞敏洪一分钟演讲稿
2014/08/26 职场文书
大二学生自我检讨书
2014/10/23 职场文书
第一节英语课开场白
2015/06/01 职场文书
音乐之声观后感
2015/06/04 职场文书
论文评审意见
2015/06/05 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
MySQL开启事务的方式
2021/06/26 MySQL