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

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); 
(0)

相关推荐

  • PHP中使用cURL实现Get和Post请求的方法

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它. 2.基本结构 在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤: (1)初始化 curl_init() (2)设置变量 curl_setopt() .最为重要,一切玄妙均在此.有一长串cURL参数可供设置,它们能指定URL请求的各个细节.要一次性

  • PHP CURL获取cookies模拟登录的方法

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据.因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了.这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并

  • PHP CURL CURLOPT参数说明(curl_setopt)

    CURLOPT_RETURNTRANSFER 选项: curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 如果成功只将结果返回,不自动输出任何内容. 如果失败返回FALSE curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); 或着不使用这个选项: 如果成功只返回TRUE,自动输出返回的内容. 如果失败返回FALSE PHP中CURL方法curl_setopt()函数的一些参数 . bool curl_setopt (int

  • php使用curl访问https示例分享

    为方便说明,先上代码吧 复制代码 代码如下: /**  * curl POST  *  * @param   string  url  * @param   array   数据  * @param   int     请求超时时间  * @param   bool    HTTPS时是否进行严格认证  * @return  string  */  function curlPost($url, $data = array(), $timeout = 30, $CA = true){ $cace

  • PHP中CURL的CURLOPT_POSTFIELDS参数使用细节

    在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法: 复制代码 代码如下: curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data); 但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误.但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确的结果.例如我们在服务器上面存在一个如下的 PHP 文件: 复制代码 代码如下: <?php print_r($_SERVER);?

  • php之curl设置超时实例

    本文实例讲述了php中curl超时设置方法.分享给大家供大家参考.具体实现方法如下: 访问HTTP方式很多,可以使用curl, socket, file_get_contents() 等方法. 在访问http时,需要考虑超时的问题. CURL访问HTTP: CURL 是常用的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等.  curl_setopt($ch, opt) 可以设置一些超时的设置,主要包括:    ① (重要) CURLOPT_TIMEOUT 设置cURL允许执行的

  • php中使用Curl、socket、file_get_contents三种方法POST提交数据

    抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl.直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了.我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好. php中curl和file_get_content的一

  • 无法加载php_curl.dll解决办法

    可是启动Apache的时候还是提示无法加载php_curl.dll这个文件,而且ext这个目录下面也有php_curl.dll这个文件,可是为什么就是找不到呢,真是百思不得其解. 然后就上google上去查,网上的资料都是说extension_dir的路径没有配置或是没有打开extension=php_curl.dll,可问题是我已经把前面的分号给去掉了. 后来看到一篇文章,问题终于解决了:原因是并不是所有的dll文件直接打开就可以了,有的是要依赖一些文件的,比如这个php_curl.dll就依

  • php之curl实现http与https请求的方法

    本文实例讲述了php之curl实现http与https请求的方法,分享给大家供大家参考.具体如下: 通常来说,php的curl函数组可以帮助我们把机器伪装成人的行为来抓取网站,下面来分享两个例子,一个是访问http网页,一个访问https网页,一起来看一下. 每次要使用curl的时候,总要查一堆资料. 现在将常用的几句保存下来,省的每次都去谷歌. 常规curl请求: 复制代码 代码如下: $url = 'http://www.jb51.net'; $curl = curl_init(); cur

  • PHP扩展CURL的用法详解

    实现的功能: 1.实现远程获取和采集内容 2.实现PHP 网页版的FTP上传下载 3.实现模拟登陆:去一个邮件系统,curl可以模拟cookies 4.实现接口对接(API),数据传输等:通过一个平台发送短信啊,抓取和传递所传输的信息. 5.实现模拟Cookie等:登陆的状态下才可以操作一些属性. 如何使用CURL功能: 默认情况加PHP是不支持CURL的,需要在php.ini中开启该功能 ;extension=php_curl.dll前面的分号去掉 1  整个操作过程中第一步是用cur_ini

  • php运行出现Call to undefined function curl_init()的解决方法

    在网上下载了一个模拟登陆discuz论坛的php程序范例,试运行时出现"Call to undefined function curl_init"这个错误提示,没有定义的函数,也就是php还没打开对curl_init函数的支持.Google了一番终于解决了,方法如下: 系统环境,WIN2003 IIS6,PHP版本5.2.12 在装好PHP后,执行类似$ch = curl_init();这样的语句,出现Call to undefined function curl_init()的错误提

  • php的curl实现get和post的代码

    curl 支持SSL证书.HTTP POST.HTTP PUT .FTP 上传,kerberos.基于HTT格式的上传.代理.cookie.用户+口令证明.文件传送恢复.http代理通道就最常用的来说,是基于http的get和post方法. 代码实现: 1.http的get实现 复制代码 代码如下: $ch = curl_init("http://www.jb51.net/") ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; cur

  • PHP curl 获取响应的状态码的方法

    PHP curl可以从服务器端模拟一个http请求,例如抓取网页.模拟登陆等.根据选项设置,可以在curl_exec的返回结果中获取到响应头和body,但这没有响应的状态吗.想要获取状态码,需要在执行curl_exec后再通过curl_getinfo来获取.例如: 复制代码 代码如下: $ch = curl_init (); curl_setopt($ch, CURLOPT_URL, 'http://www.google.com.hk'); curl_setopt($ch, CURLOPT_TI

  • PHP CURL获取返回值的方法

    在CURL中有一个参数 CURLOPT_RETURNTRANSFER : 复制代码 代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 默认是 0 直接返回获取的输出的文本流,有时候,我们要拿返回值来做判断或者做其他用途的话那就不太好了. 幸好CURLOPT_RETURNTRANSFER  可以设置,如果设置成CURLOPT_RETURNTRANSFER 1: 复制代码 代码如下: curl_setopt($ch, CURLOPT_RETURNT

随机推荐