PHP中的curl函数

一.用cURL制作一个简单的网页爬虫

$curl=curl_init('http://www.baidu.com');
curl_exec($curl);
curl_close($curl);
$curlobj = curl_init();            // 初始化
curl_setopt($curlobj, CURLOPT_URL, "http://www.baidu.com");        
// 需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);           
// 将curl_exec()获取的信息以字符串返回,而不是直接输出
$output=curl_exec($curlobj);  // 执行
curl_close($curlobj);          // 关闭cURL
echo str_replace("百度","屌丝",$output);

1.curl_init ([ string $url = NULL ] )
作用:初始化一个新的会话,返回一个cURL句柄
供curl_setopt(), curl_exec()和curl_close() 函数使用
参数:url:如果提供了该参数,CURLOPT_URL 选项将会被设置成这个值。你也可以使用curl_setopt()函数手动地设置这个值。
返回值:如果成功,返回一个cURL句柄,出错返回 FALSE。

2.curl_exec ( resource $ch )
作用:执行给定的cURL会话。这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用
参数:ch由 curl_init() 返回的 cURL 句柄。
返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE

3.cur_close ( resource $mh )
作用:关闭一个cURL会话并且释放所有资源。cURL句柄ch 也会被释放
参数: ch由 curl_init() 返回的 cURL 句柄
返回值:没有返回值.

二.用cURL调用WebService获取天气信息

header("Content-type: text/html; charset=utf-8");
define('AppKey','自己申请的appkey值');
$cityname='北京';
$url='http://v.juhe.cn/weather/index?format=2&cityname='.$cityname.'&key='.AppKey;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$out=curl_exec($ch);
curl_close($ch);
$out =json_decode($out,true);
echo '
';
print_r($out);
echo '
'
;

三.用cURL登录慕课网并下载个人空间页面

四.用cURL从FTP服务器上下载文件到本地

$curlobj = curl_init();    
curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.10.1/1.jpg");  
curl_setopt($curlobj, CURLOPT_HEADER, 0); 
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); 
 //允许 cURL 函数执行的最长秒数。 
curl_setopt($curlobj, CURLOPT_TIMEOUT, 300); 
//FTP用户名:密码
//curl_setopt($curlobj, CURLOPT_USERPWD, "admin:123456");


//保存到本地的文件名
$outfile = fopen('zhangsan.jpg', 'wb');
//设置输出文件(资源流),默认为STDOUT (浏览器)
curl_setopt($curlobj, CURLOPT_FILE, $outfile);

$rtn = curl_exec($curlobj);  
fclose($outfile); 
if(!curl_errno($curlobj)){
    echo "RETURN: " . $rtn;  
} else {
  echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);

五.用cURL从本地上传文件到FTP

$curlobj = curl_init();
$localfile = 'zhang3.php';
$fp = fopen($localfile,'r');
curl_setopt($curlobj,CURLOPT_URL,'ftp://192.168.10.1/li3.php');
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curlobj,CURLOPT_TIMEOUT,300);

//curl_setopt($curlobj, CURLOPT_USERPWD, "admin:");
curl_setopt($curlobj,CURLOPT_UPLOAD,true);
//上传文件时需要读取的文件
curl_setopt($curlobj,CURLOPT_INFILE,$fp);
//希望传给远程站点的文件尺寸
curl_setopt($curlobj,CURLOPT_INFILESIZE,filesize($localfile));
$rtn = curl_exec($curlobj);
fclose($fp);
if(!curl_errno($curlobj)){
    echo 'Uploader successfully';
}else{
    echo 'Curl error: '.curl_error($curlobj);
    echo 'Curl errno: '.curl_errno($curlobj);
}
curl_close($curlobj);

六.用cURL访问HTTPS资源

$curlobj = curl_init();            // 初始化
curl_setopt($curlobj, CURLOPT_URL, "https://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js");       // 设置访问网页的URL
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);           // 执行之后不直接打印出来

// 设置HTTPS支持
date_default_timezone_set('PRC'); // 使用Cookie时,必须先设置时区
curl_setopt($curlobj, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查从证书中检查SSL加密算法是否存在
curl_setopt($curlobj, CURLOPT_SSL_VERIFYHOST, 2); // 

$output=curl_exec($curlobj);  // 执行
curl_close($curlobj);          // 关闭cURL
echo $output;

你可能感兴趣的:(PHP-学习笔记)