• 技术文章 >后端开发 >php教程

    php如何使用curl?(用法介绍)

    青灯夜游青灯夜游2020-04-17 09:16:45转载1425
    php如何使用curl?下面本篇文章给大家总结一下php中的curl的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    一、curl简介

    百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏览器来传输数据,因为是模拟浏览器所以它支持多种的网络协议。目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

    php中使用最多的是通过curl来模拟get和post请求。

    二、用法

    (1)、要想使用curl,第一步先要在php中开启curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重启服务器。在php代码中用phpinfo()打印,发现图中curl说明开启成功。

    (2)、使用curl完成简单的请求主要分为四大步:

    初始化,创建一个新的curl资源。

    设置url和相应的选项

    抓取url并把他传递给浏览器

    关闭curl资源。把资源释放。

    eg:

    <?php
    // 创建一个新cURL资源
    $ch = curl_init();
    
    // 设置URL和相应的选项
    $options = array(CURLOPT_URL => 'http://www.example.com/',
                     CURLOPT_HEADER => false
                    );
    
    curl_setopt_array($ch, $options);
    
    // 抓取URL并把它传递给浏览器
    curl_exec($ch);
    
    // 关闭cURL资源,并且释放系统资源
    curl_close($ch);
    ?>

    三、curl函数

    四、实例

    1、使用curl,get获得数据

    <?php
    $url = 'http://www.example.com';
    //初始化一个 cURL 对象 
    $ch  = curl_init();
    //设置你需要抓取的URL
    curl_setopt($ch, CURLOPT_URL, $url);
    // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //是否获得跳转后的页面
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    echo $data;
    ?>

    2、使用curl,post获得数据

    <?php
    function curl_post($url, $arr_data){
       $post_data = http_build_query($url_data);
       $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch,  CURLOPT_POSTFLELDS, $post_data);
        $data = curl_exec($ch);
        curl_close($ch);
        echo $data;
    }
    $arr_post = array(
        'name'=>'test_name',
        'age'   => 1
    );
    curl_post("http://www.explame.com/", $arr_post);
    ?>

    3、使用代理抓取页面

    为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。

    <?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://google.com"); 
    curl_setopt($ch, CURLOPT_HEADER, false);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //是否通过http代理来传输
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
    curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080);  
    //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密码的话,加上这个  
    $result=curl_exec($ch); 
    curl_close($ch);
    ?>

    4、继续保持本站session的调用

    在实现用户同步登录的情况下需要共享session,如果要继续保持本站的session,那么要把sessionid放到http请求中

    <?php
    $session_str = session_name().'='.session_id().'; path=/; domain=.explame.com';
    session_write_close(); //将数据写入文件并且结束session
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIE, $session_str); 
    $ret = curl_exec($ch);
    curl_close($ch);
    ?>

    end

    本文转载自:https://blog.csdn.net/longgeaisisi/article/details/89330576

    推荐学习:PHP视频教程

    以上就是php如何使用curl?(用法介绍)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:php
    上一篇:php中如何使用json_decode()和json_encode()? 下一篇:PHP中date()函数输出的时间与Linux不一致怎么办?
    大前端线上培训班

    相关文章推荐

    • 了解PHP文件上传相关知识• php之var_dump(1...9)会输出什么?• 了解PHP中self关键字的相关知识• 安装php7并与php5共存

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网