一波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获取mysql数据库中的所有表名的代码
Apr 23 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
php实现的简单日志写入函数
Mar 31 PHP
php cli配置文件问题分析
Oct 15 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
php数组函数array_walk用法示例
May 26 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
asp.net和php的区别点总结
Oct 10 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
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php动态函数调用方法
2015/05/21 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
python提取字典key列表的方法
2015/07/11 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python使用生成器实现可迭代对象
2018/03/20 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
印尼购物网站:iLOTTE
2019/10/16 全球购物
千元咖啡店的创业计划书范文
2013/12/29 职场文书
人力资源经理自我评价
2014/01/04 职场文书
班组长岗位职责
2014/03/03 职场文书
合同协议书格式
2014/04/18 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
2014年药店工作总结
2014/11/20 职场文书
小学班主任教育随笔
2015/08/15 职场文书
校长新学期寄语2016
2015/12/04 职场文书