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;
}
- 1
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;
}
- 1
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);
}
- 1
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;
}
- 1
下面是获取重庆时时彩当天每期所出的中奖号码的例子:
$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],意义分别是中奖号码,具体期数,期号。
- 1
下面对上面出现的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式的文件