加入收藏 | 设为首页 | 会员中心 | 我要投稿 上饶站长网 (https://www.0793zz.com.cn/)- 数据库平台、视觉智能、智能搜索、决策智能、迁移!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php如何使用curl?用法介绍

发布时间:2022-06-24 22:03:01 所属栏目:PHP教程 来源:互联网
导读:php如何使用curl?下面本篇文章给大家总结一下php中的curl的用法,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 一、curl简介 百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏
  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.phpfensi.com/',
  
                   CURLOPT_HEADER => false
  
                  );
  
  curl_setopt_array($ch, $options);
  
  // 抓取URL并把它传递给浏览器
  
  curl_exec($ch);
  
  // 关闭cURL资源,并且释放系统资源
  
  curl_close($ch);
  
  ?>
  三、curl函数
 
  curl_close — 关闭一个cURL会话
 
  curl_copy_handle — 复制一个cURL句柄和它的所有选项
 
  curl_errno — 返回最后一次的错误号
 
  curl_error — 返回一个保护当前会话最近一次错误的字符串
 
  curl_escape — 使用 URL 编码给定的字符串
 
  curl_exec — 执行一个cURL会话
 
  curl_file_create — 创建一个 CURLFile 对象
 
  curl_getinfo — 获取一个cURL连接资源句柄的信息
 
  curl_init — 初始化一个cURL会话
 
  curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄
 
  curl_multi_close — 关闭一组cURL句柄
 
  curl_multi_exec — 运行当前 cURL 句柄的子连接
 
  curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流
 
  curl_multi_info_read — 获取当前解析的cURL的相关传输信息
 
  curl_multi_init — 返回一个新cURL批处理句柄
 
  curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
 
  curl_multi_select — 等待所有cURL批处理中的活动连接
 
  curl_multi_setopt — 为 cURL 并行处理设置一个选项
 
  curl_multi_strerror — Return string describing error code
 
  curl_pause — Pause and unpause a connection
 
  curl_reset — 重置一个 libcurl 会话句柄的所有的选项
 
  curl_setopt_array — 为cURL传输会话批量设置选项
 
  curl_setopt — 设置一个cURL传输选项
 
  curl_share_close — Close a cURL share handle
 
  curl_share_init — Initialize a cURL share handle
 
  curl_share_setopt — Set an option for a cURL share handle.
 
  curl_strerror — Return string describing the given error code
 
  curl_unescape — 解码给定的 URL 编码的字符串
 
  curl_version — 获取cURL版本信息
 
  四、实例
 
  1、使用curl,get获得数据
 
  <?php
  
  $url = 'http://www.phpfensi.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.phpfensi.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);
  
  ?> 。

(编辑:上饶站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读