一波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+MySQL5.0中文乱码解决方法
Nov 20 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
10个简化PHP开发的工具
Dec 25 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
详解PHP序列化和反序列化原理
Jan 15 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
PHP新手上路(五)
2006/10/09 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
python如何随机生成高强度密码
2020/08/19 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
金融专业推荐信
2013/11/14 职场文书
中专生自我鉴定范文
2013/12/19 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
老公保证书
2015/01/17 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书