一波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写的简易聊天室代码
Jun 04 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
Symfony2函数用法实例分析
Mar 18 PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
php优化查询foreach代码实例讲解
Mar 24 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
WHOIS类的修改版
2006/10/09 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Python断言assert的用法代码解析
2018/02/03 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
学生未请假就回家检讨书
2014/09/22 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
python处理json数据文件
2022/04/11 Python