PHP中curl的使用

1. 用curl上传本地文件至远程服务器


说明:<=5.4 curl上传文件只支持@语法
= 5.5 支持@语法和CURLFile类
大于=5.6 只支持CURLFile类


// 兼容性写法参考示例
function curl_upload($url, $source){
 $curl = curl_init();
 if (class_exists('\CURLFile')) {// 这里用特性检测判断php版本
        curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
               $data = array('file' => new \CURLFile(realpath($source))); //>=5.5
        } else {
            if (defined('CURLOPT_SAFE_UPLOAD')) {
                curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
            }
            $data = array('file' => '@' . realpath($source));//<=5.5
        }
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1 );
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($curl);
        return $result;
}

2. 简单的curl+post请求例子

function curl($postUrl,$param){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $postUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}

3. 简单的curl+get请求例子

function curl_get($url, $param){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url.http_build_query($param));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($curl);
return json_decode($output, true);
}

4. 简单的curl获取网页原代码并进行爬虫获取标签值的例子

public static function curl_get_url_content($url){
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $url); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_ENCODING, 'gzip');  
        $output = curl_exec($ch);
        return $output;
    }
下面是获取重庆时时彩当天每期所出的中奖号码的例子:
$url = 'http://caipiao.163.com/award/cqssc/'.date('Ymd').'.html';
        $output = curl_get_url_content($url);
        $ru ="/<td class=\"start\" data-win-number=(.*) data-period=(.*)>(.*)<\/td>/";
        $arr=array();
        preg_match_all($ru,$output,$arr);
其中(.*)是匹配的内容,三个(.*)分别对应$arr[1],$arr[2],$arr[3],意义分别是中奖号码,具体期数,期号。

下面对上面出现的curl_setopt函数进行说明:
curl_optset($ch, $option, $value) 是对发起的curl请求参数进行设置。
$ch 是由curl_init()初始化返回的会话;
$option 是设置的参数选项;
$value 是要设置的$option的参数值;
其中,常用的option参数有:
1. CURLOPT_URL 是指远程服务器URL;
2. CURLOPT_RETURNTRANSFER 当设置为0或者不设置时,成功时只返回true,自动输出内容,错误时返回false,当设置为1时,成功时返回输出结果,不自动输出内容, 错误时返回false;
3. CURLOPT_HEADER 当设置为0或者不设置时,不把头信息包含在输出中,当设置为1时,把头信息包含在输出中;
4. CURLOPT_POST 当设置为1时,说明是向远程服务器发起一个post请求;
5. CURLOPT_POSTFIELDS 其值为当CURLOPT_POST 为1时,需要发送到远程服务器端的数据
6. CURLOPT_TIMEOUT 用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
7. CURLOPT_CONNECTTIMEOUT 告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
8. CURLOPT_SAFE_UPLOAD 设置为true时,强制PHP的cURL模块拒绝旧的@语法,仅接受CURLFile式的文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值