php 中 怎么让curl_exec 以数组形式返回

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 中 怎么让curl_exec 以数组形式返回相关的知识,希望对你有一定的参考价值。

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);

$result = curl_exec($ch);

echo var_dump($result); //这样输出出来是bool型,我想反回一个数组,然后用正则去匹配。
或者不返回数组,有什么办法可以在这种情况下用正则匹配

可以先看看php中的 curl_exec函数的说明


(PHP 4 >= 4.0.2, PHP 5)

curl_exec — 执行一个cURL会话

说明

mixed curl_exec ( resource $ch )

执行给定的cURL会话。

这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。

参数


ch

由 curl_init() 返回的 cURL 句柄。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 。



我前两天刚好用到过的两种情况

//从返回结果中获取指定的值
$res=curl_exec($ch);
$pa = '%<ul class="ul1"><li>本站主数据:(.*?)</li>%si';
preg_match($pa,$res,$r);
return  $r[1];

//第二种 的返回结果是以json形式。
$res=json_decode(curl_exec($ch),true);
print_r($res);

参考技术A 可以将他返回的内容赋值给一个变量。只需再前面加上,curl_setopt($ch,CUROPT_RETURNTRANSFER,1);就可以将返回结果赋值给变量了。比如,$r=curl_exec($ch);这时返回的结果全部包含再$r中,想什么时候输出什么时候输出,如果不准备要他的结果,那么就将前面的1换成0 参考技术B 把数据编辑成数组,然后在返回就行了 参考技术C 返回json,转换成array就可以了。

POST请求中参数以form data和request payload形式+清空数组方式

  1. 测试与服务端ajax时用的dva封装的request方法,而后端怎么也拿不到参数。结果返现参数在request payload里。

HTTP POST表单请求提交时:Content-Typeapplication/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8。

表单提交数据是名值对的方式,而文件上传服务器需要特殊处理,普通的post请求数据格式不固定,不一定是名值对的方式,所以服务器无法知道具体的处理方式,所以只能通过获取原始数据流的方式来进行解析。jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够正确解析,而使用原生ajax请求时,如果不显示的设置Content-Type,那么默认是text/plain,这时不能用request.getParameter(name)的形式获取,所以才只能通过获取原始数据流的方式来进行解析请求数据。

      2.清空数组

  • 方式1,splice

var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary); // 输出 Array[0],空数组,即被清空了

  • 方式2,length赋值为0。

这种方式很有意思,其它语言如Java,其数组的length是只读的,不能被赋值。如int[] ary = {1,2,3,4}; ary.length = 0;Java中会报错,编译通不过。而JS中则可以,且将数组清空了。var ary = [1,2,3,4]; ary.length = 0; console.log(ary);// 输出 [],空数组,即被清空了目前 Prototype中数组的 clear 和mootools库中数组的 empty 使用这种方式清空数组。

  • 方式3,赋值为[]

var ary = [1,2,3,4]; ary = [];

以上是关于php 中 怎么让curl_exec 以数组形式返回的主要内容,如果未能解决你的问题,请参考以下文章

POST请求中参数以form data和request payload形式+清空数组方式

Java怎么让数组中元素按照牌值从小到大的顺序排列

php中一个二维数组,怎么吧数组中的数据作为value插入到数据库某个表中

PHP中的curl_exec

php curl

PHP中遍历二维数组—以不同形式的输出操作