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

5年以前  |  阅读数:693 次  |  编程语言:PHP 

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

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8