* [ ] Curl使用说明 ``` new \Curl($data); ``` data(array):curl公共配置(详细参数请看类) * [ ] 连贯操作 ~~~ //多线程 $curl=new \Curl(array); $curl->url('https://ip138.com')->coding('utf8', 'gb2312')->save(); //使用save保存设置 $curl->url('https://baidu.com')->save();//使用save保存设置 $data=$curl->exec(); //使用exec执行,返回数组 echo $data[0]; echo $data[1]; //多线程 $curl=new \Curl(array); $curl->url('https://ip138.com')->coding('utf8', 'gb2312')->save('ip138'); //使用save保存设置 $curl->url('https://baidu.com')->save('baidu');//使用save保存设置 $data=$curl->exec(); //使用exec执行,返回数组 echo $data['ip138']; echo $data['baidu']; //单线程 $curl=new \Curl(array); echo $curl->url('https://ip138.com')->coding('utf8', 'gb2312')->exec(); //方法1 echo $curl->url('https://ip138.com')->coding('utf8', 'gb2312')->exec(true); //方法2 //静态方法(参数请看类) echo \Curl::call(['url'=>'https://ip138.com','coding'=>['utf8', 'gb2312']]); // 代理IP $ip = [ "status" => false, "ip" => "x.x.x.x", "port" => "xxxx", "userpass" => "xxxx:xxx", "type" => "HTTP", "auth" => "BASIC", ]; $curl = new \Curl(["ip" => $ip]); // 使用代理ip $curl->url("http://xxxx.com")->ip(true)->save('a'); // 不适用代理ip $curl->url("http://xxxx.com")->ip(false)->save('b'); // 执行请求 $data = $curl->exec(); $a = ['ip' => Curl::headKey($data['a'], '\"\>', '\<'), 'address' => Curl::headKey($data['a'], '来自:')]; $b = ['ip' => Curl::headKey($data['b'], '\"\>', '\<'), 'address' => Curl::headKey($data['b'], '来自:')]; //静态方法 1.通过名称获取指定头部信息 headkey($header, $start, $end = ''); //header=内容,start=起始字符串,end=结尾字符串 2.获取头部内容 (远程获取内容时,头部信息和内容一起时,可通过此方法获取单独获取头部信息) gethead($data); //data=内容 3.获取body内容 (远程获取内容时,头部信息和内容一起时,可通过此方法获取单独获取body) getbody($data);//data=内容 4.分离头部和body内容成array (远程获取内容时,头部信息和内容一起时,可通过此方法分离) headbody($data);//data=内容 ~~~ * [ ] 公共参数配置说明 ***** | 参数名 | 数据类型 | 默认值 | 参数说明 | 对应 curl 属性 | | --- | --- | --- | --- | --- | | url | string | null | 设置请求地址(必选) | | | time | int | 10 | 设置超时时间,单位为秒 | CURLOPT_CONNECTTIMEOUT | | zip | string | null | 解压缩gzip (gzip,deflate) | CURLOPT_ENCODING | | export | boolean | true| true 成功只将结果返回,不自动输出任何内容, false 成功只返回TRUE,自动输出返回的内容 | CURLOPT_RETURNTRANSFER | | sslpeer| boolean | false | 是否检查证书,false 不检查,true 检查 | CURLOPT_SSL_VERIFYPEER | | sslhost | int | 2 | 1 检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain) 2 检查公用名是否存在,并且是否与提供的主机名匹配 | CURLOPT\_SSL\_VERIFYHOST | | jump | boolean | false | 是否自动跳转 | CURLOPT_FOLLOWLOCATION | | ifhead | boolean | false | 是否返回头部信息 | CURLOPT_HEADER | | ifbody | boolean | false | 是否返回body信息 | CURLOPT_NOBODY | | agent | string | $_SERVER['HTTP_USER_AGENT']) 的值或 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; | 设置HTTP请求中包含一个*"User-Agent: "*头的字符串 | CURLOPT_USERAGENT | | referer | string 或 boolean | false | 是否设置 referer | CURLOPT_AUTOREFERER、CURLOPT_REFERER | | ip | boolean 或 array | [] | 设置代理通道 ,如果传入数组,结构为:["status" => "boolean,true开启代理,false不开启代理,可通过ip方法动态设置开启关闭代理状态","ip" => "代理IP地址","port" => "代理端口号", "userpass" => "代理账号:密码,username:password的格式", "type":"设置CURLOPT_PROXYTYPE,可选值:HTTP,SOCKS5","auth" => "设置CURLOPT_PROXYAUTH ,可选值:BASIC,NTLM"] | CURLOPT_PROXY、CURLOPT_PROXYPORT、CURLOPT_PROXYUSERPWD、CURLOPT_PROXYTYPE、CURLOPT_PROXYAUTH | | cookie | string 或 boolean | false | 设定HTTP请求中*"Cookie: "*部分的内容。多个cookie用分号分隔,分号后带一个空格(例如, "*fruit=apple; colour=red*") | CURLOPT_COOKIE | | mode | string | GET| 请求方式 GET、POST、PUT、DELETE | CURLOPT_CUSTOMREQUEST、CURLOPT_POST | | data | array 或 string | []| 请求的数据,如果请求方式为GET,会自动将data拼接到url参数里面 | CURLOPT_POSTFIELDS、CURLOPT_URL | | head | array| []| 设置请求头,例['X-Requested-With: XMLHttpRequest',''] | CURLOPT_HTTPHEADER | | coding | array 或 string | []| 结果数据编码转换,[to, from], 从from编码格式转换为to的编码格式 | 无 | | arr | boolean|true| json数据转为数组或者对像(true=数组,false=对像),只有数据为json才会生效 | 无 | | json | boolean| false | 是否json提交(get不支持json),请求头新增:Content-Type: application/json;Content-Length:xxx | 无 | | ajax | boolean | false | 是否ajax提交,请求头新增:X-Requested-With: XMLHttpRequest | 无 | | text | boolean | false | 是否文本提交 (get不支持text)| 无 | | file | string | false | 保存的文件名| 无 |