本文目录一览:
- 1、PHP中的curl_exec
- 2、在 php curl返回
- 3、php 中 怎么让curl_exec 以数组形式返回
- 4、php curl_exec无法返回结果
- 5、php 中 怎么让curl_exec 以数组形式返回
- 6、请教关于curl_exec返回值的问题~~~ - PHP进阶讨论
PHP中的curl_exec
curl_exec
(PHP 4 = 4.0.2, PHP 5) curl_exec — 执行一个cURL会话
可以参考官方网站范例:
你要用CURL,就跟Session一样,要先初始化 curl_init(),不然PHP部会知道该怎麼运作。初始化完成之後就要开始设定参数,就像是要不要显示出来。当你参数设定完毕,就要开始执行这个CURL。最後就要关闭这个CURL。这就算是一个简单的CURL运用,当然还有更多变化。
实际例子:
?php
// 创建一个cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "
);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 抓取URL并把它传递给浏览器
curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
?
如使用mysql一样,首先,我们必须先建立一个「curl」的连线,也因此,必须使用到 curl_init() 这个函式。而为了怕建立连线忘了关闭。因此,必须先写好关闭的函式,curl_close($ch)。
不过大部分HTML标签都可以抓下来,并且显示,可是有部分可能与资料加密性或是转址的部分,就无法正常显示。
/ 建立CURL连线
$ch = curl_init();
// 设定撷取的URL网址
curl_setopt($ch, CURLOPT_URL, "
);
curl_setopt($ch, CURLOPT_HEADER, false);
//将curl_exec()获取的讯息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// 执行
$temp=curl_exec($ch);
// 关闭CURL连线
curl_close($ch)
加上curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);之後,他会将curl_exec()获取的讯息以文件流的形式返回传给$temp,而不是直接输出。如果要显示出画面的话就加上 echo $temp;就可以了。
下面先分享一个比较常用的,传递参数的部分。
简易的使用语法(GET):
// 建立CURL连线
$ch = curl_init();
// 设定撷取的URL网址
curl_setopt($ch, CURLOPT_URL, "
);
curl_setopt($ch, CURLOPT_HEADER, false);
//将curl_exec()获取的讯息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// 执行
$temp=curl_exec($ch);
// 关闭CURL连线
curl_close($ch)
Get参数可以直接在网址传递例如网址後面加的?SomeVar=test,但是一旦资料量很大,用POST送还是比较适合。
简易的使用语法(POST):
// 建立CURL连线
$ch = curl_init();
// 设定撷取的URL网址
curl_setopt($ch, CURLOPT_URL, "
);
curl_setopt($ch, CURLOPT_HEADER, false);
//将curl_exec()获取的讯息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//设定要传的 变数A=值A 变数B=值B (中间要用符号串接)
$PostData = "a=abcb=def";
//设定CURLOPT_POST 为 1或true,表示要用POST方式传递
curl_setopt($ch, CURLOPT_POST, 1);
//CURLOPT_POSTFIELDS 後面则是要传接的POST资料。
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
// 执行
$temp=curl_exec($ch);
// 关闭CURL连线
curl_close($ch)
以上的传递方式在某些状况下很好用,譬如说,没有设计完整的会员申请系统,就可以利用上面这些程式码,做一个自动注册申请机
在 php curl返回
给你个我写的curl方法。
/**
* curl模拟提交
* @param string $url 网址
* @param array/string $opt 提交参数
* @param string $header 取回的头信息
* @param string $redirect 是否重定向
* @param boolean $ssl 验证https证书
* @return [type] 返回信息
*/
function curl($url, $opt='GET', $header=null, $redirect=true, $ssl=false){
//初始化
$ch = curl_init($url);
//配置设置
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $ssl);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $redirect);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); #返回结果
curl_setopt($ch, CURLOPT_HEADER, true); #显示协议头
if(is_array($opt)){
//转小写
$opt = array_change_key_case($opt, CASE_LOWER);
//POST
if(isset($opt['type']) strtoupper($opt['type'])=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, (isset($opt['data']) ? $opt['data'] : ''));
}
//User-Agent
if(array_key_exists('ua', $opt))
curl_setopt($ch, CURLOPT_USERAGENT, $opt['ua']);
//Header
if(array_key_exists('header', $opt)){
curl_setopt($ch, CURLOPT_HTTPHEADER, (array)$opt['header']);
}
//Cookie
if(array_key_exists('cookie', $opt))
curl_setopt($ch, CURLOPT_COOKIE, $opt['cookie']);
//Referer
if(array_key_exists('referer', $opt))
curl_setopt($ch, CURLOPT_REFERER, $opt['referer']);
}else{
//仅POST
if(strtoupper((string)$opt) == 'POST')
curl_setopt($ch, CURLOPT_POST, true);
}
$result = curl_exec($ch);
if(curl_errno($ch)){
$result = curl_error($ch);
}else{
//获取头长度
$length = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
//取出头信息
$header = substr($result, 0, $length);
//去掉头信息
$result = substr($result, $length);
}
//释放
curl_close($ch);
return $result;
}
php 中 怎么让curl_exec 以数组形式返回
可以将他返回的内容赋值给一个
变量
。只需再
前面
加上,curl_setopt($ch,CUROPT_RETURNTRANSFER,1);就可以将返回结果赋值给变量了。比如,$r=curl_exec($ch);这时返回的结果全部包含再$r中,想
什么时候
输出什么时候输出,如果不准备要他的结果,那么就将前面的1换成0
php curl_exec无法返回结果
你要显示是不是需要这个参数,你试试
// 设置curl 参数,要求结果保存到变量中还是输出到屏幕上,false直接输出到屏幕上。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return_data = curl_exec($ch);
curl_close($ch);
var_dump($return_data);
php 中 怎么让curl_exec 以数组形式返回
可以先看看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);
请教关于curl_exec返回值的问题~~~ - PHP进阶讨论
[php]$curlObj = curl_init();curl_setopt($curlObj, CURLOPT_URL, $url); // 设置访问的urlcurl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); //curl_exec将结果返回,而不是执行$result = curl_exec($curlObj);[/php]