一步步教你如何编写Shell脚本,PHP的cURL扩展库使用详解

问题:

在还尚无接触curl的时候,相信我们在赢得网页内容的时,使用得最多的一个函数正是:file_get_contents(),不过它的可调整性非常不够利索,不可能管理错误景况,对于各样复杂意况的募集更是显得有个别力不能及。由此,本文将为你介绍别的一种工具:cU奥迪Q3L的应用办法,在背后也还大概会付出相关的多少个案例,那么些都是你使用file_get_contents()不能够变成的。

  • 恳请在线api, 获取json格式的回来结果
  • 剖析json里面包车型地铁三个值
  • 将该值存款和储蓄到文件

为了更加好的通晓上面包车型地铁开始和结果,这里先交付二个curl的最简易的案例

付出筹算

入门案例:

1、shell

$url = "";

$ch = curl_init; //最早化二个cU中华VL会话

curl_exec; //试行四个cU酷威L会话

curl_close; //关闭一个cUCR-VL会话

立即入门:

该案例的实施结果正是把$url的网页内容输出到您的浏览器上,其实这么些案例的效能和使用file_get_contents()的结果是毫无二致的,那是因为它从不设置任何的参数。但cUEnclaveL的成效远远不只有这么些,下边我们开端解说cU奥迪Q7L更详实的使用方法。

#!/bin/shcd ~mkdir shell_tutcd shell_tutfor ((i=0; i<10; i++)); do touch test_$i.txtdone

cURubiconL是一个得以动用ULANDL的语法模拟浏览器来传输数据的工具库,libcurl近年来支撑http、https、ftp、gopher、telnet、dict、file和ldap左券。libcurl同一时间也支撑HTTPS认证、HTTP
POST、HTTP PUT、 FTP 上传(这么些也能透过PHP的FTP扩充实现)、HTTP
基于表单的上传、代理、cookies和客商名+密码的表达。

创制三个文书夹, 并在中间新建十一个文本

留心:在运用cU奥德赛L库在此以前,记得要先将您的配置文件中开采的你cU汉兰达L模块,能够选拔phpinfo()查看curl模块是或不是开启,如未有张开就直接使用相关的措施则会报错。

2、curl

运用 cUXC90L 函数的着力观念是先使用curl_init() 开始化
cURAV4L会话,接着能够因此 curl_setopt() 设置须要的所有事采用,然后选取curl_exec()来推行会话,当实施完会话后使用curl_close()关闭对话。

利用curl央浼互连网, 并获取重回值

大约来讲,使用cU路虎极光L完成轻便的乞请首要分为以下四个步骤:

curl基本用法:

//初始化cURL

$url = "";

$ch = curl_init; //开首化三个cU途锐L会话

//设置URL和对应的取舍

//将curl_云顶娱乐棋牌游戏 ,exec()获取的音讯以字符串再次回到,并非一向出口。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//抓取U翼虎L并把它传递给浏览器

//由于手续2对CULacrosseLOPT_RETURNTRANSFER的设置,curl_exec()不会直接出口内容

$str = curl_exec; //试行二个cULacrosseL会话

//关闭cU揽胜极光L能源,并且释放系统财富

curl_close; //关闭三个cU奇骏L会话

echo $str; //输出步骤3拿到的页面内容

$ curl www.sina.com

上面的4个步骤将会把收获到的网页内容输出,那是使用cUQashqaiL最中央的七个步骤。

直接回到网页内容

cUSportageL之所以庞大,只若是反映在它的第一个步骤中。你能够经过curl_setopt灵活地设置央求选项,更加多的参数设置查看官方网站:

$ curl -o [文件名] www.sina.com

法定上位列的是持有的参数列表,全部都挥之不去也尚无怎么必要。可是实际上支出中,大家常用的也就来来去去这几个,所以在那小编也顺带把常用的几个都详细讲讲,那样也许有益于我们更加好的长足的施用实际支付中。但建议临时光的话最佳把官方网址络的都看一篇,那样起码本身心中也可能有个底,知道里面有个别什么点子,当真正要求的时候也方便卷土重来查找。

将网页内容存款和储蓄到文件中, 也就是wget命令

curl_setopt($ch,
CURLOPT_RETURNTRANSFER,true);//将curl_exec()获取的音讯以字符串重回,而不是一贯出口。

curl_setopt($ch,
CURLOPT_HEADE凯雷德,false);//不输出头文件,假使设为true,获得的网页源代码最前面会含有'HTTP/1.1
200 OK'等剧情

curl_setopt($ch, CURLOPT_FILE, $fp);//设置输出文件,默以为STDOUT 。

curl_setopt($ch, CURLOPT_POST, 1);// 设置乞请为post类型

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//
加多post数据到央浼中

赋值操作:

除了那些之外上面基本的4个步骤用到的4个函数,cUENCOREL还提供了别的过多实用的函数,如curl_error、curl_getinfo等。

response=$(curl www.sina.com)echo $response

在施行一个cUGL450L伏乞后,你也足以应用curl_getinfo获得该央浼的现实新闻:

注意: =前后未有空格

curl_exec;

$curl_info= curl_getinfo;

echo "收到的http回复的code为: {$curl_info['http_code']}";

jq

上述$curl_info是三个关乎数组,能够从当中得到相当多的切切实实央浼消息。

jq是命令行剖析json的很好的工具

参考:

安装

$response = curl_exec;

if ($response === FALSE) {

echo "cU奔驰G级L 具体出错新闻: " . curl_error;

}

直接到官网下载Linux64版本(笔者是用本地下载好后传上服务器的,
从前一向在服务器用wget下载平昔报错Segmentation fault, 折腾好久~)

只顾了,在做上述判定时务供给运用===,因为哀告的还原可能是空字符串,curl在哀告出错的意况下回重临FALSE值,所以我们亟须运用===,并不是==

将其copy到bin目录

参考:

cp jq-linux64 /usr/bin/jq

$url = "";

$post_data = array (

"name" => "nosee",

"url" => "",

"action" => "Submit"

);

$ch = curl_init;

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_POST, 1);// 设置央求为post类型

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//
增加post数据到央浼中

$str = curl_exec;// 实施post央浼,获得回复

curl_close;

echo $str ;

$url = ""; //远程服务器上要下载的文本

$fp = fopen("output.zip", "w"); //展开三个当半夏件指针能源

$ch = curl_init; //开首化二个cU奥德赛L会话

curl_setopt($ch, CURLOPT_FILE, $fp); //设置输出文件,默以为STDOUT 。

$str = curl_exec; //试行三个cU猎豹CS6L会话

if ($str === FALSE) {

echo "cUENVISIONL 具体出错新闻: " . curl_error;

}

curl_close; //关闭一个cU中华VL会话

fclose; //关闭二个已开发的文件指针

使用

PHP使用CUTiguanL上传文件只需发送八个POST乞求就足以了,在伸手中设置某些字段为须求上传的文本全路径,并且以“@”起始,然后利用CUENVISIONL把该变量以POST格局发送到服务器,在劳务端即可以从一级全局变量$_FILES中取到相应的上传文件新闻。需求在乎的是,上传文件的变量不是存在着$_POST中,而是在$_FILES中。

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。