1.cUrl(Client URL Library Functions)的基本概念
由Stenberg 创建。官方定义为:curl is a command line tool for transferring data with URL syntax,即使用URL语法传输数据的命令行工具。我们可以简单的理解成cUrl是客户端向服务器请求资源的工具。
2.cUrl的使用场景
1.网页资源(网页爬虫)
2.WebService数据接口资源(动态获取接口数据,比如物流信息)
3.FTP服务器里面的文件资源(下载FTP服务器的文件)
4.其他资源(所有网络上的资源可以用cUrl访问和下载到本地)
3.查看当前linux是否支持cUrl
php -i | grep cURL (php -i 打印出所有当前php的设置,grep curl 过滤查找curl )
4.在PHP 中使用cURL
1.初始化curl(curl_init())
2.向服务器发送请求
3.接受服务器数据(2、3 curl_exec())
4.关闭curl(curl_close())
5.抓取网页信息并替换部分内容
<?php
$curlobj = curl_init();
curl_setopt($curlobj,CURLOPT_URL,"http://www.baidu.com"); // 设置访问页面的URL
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 执行之后不直接打印出来
$output = curl_exec($curlobj); // 执行
curl_close($curlobj); // 关闭cURL
echo str_replase("百度","kitukeyii",$output);
?>
6.查询苏州最新的天气
<?php
$data = 'theCityName=苏州';
$curlobj = curl_init();
curl_setopt($curlobj,CURLOPT_URL,"http://www.webxml.com.cn/WebServices
/WeatherWebService.asmx/getWeatherbyCityName");
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_POST, 1);
curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array(
"application/x-www-form-urlencoded; charset=utf-8",
"Content-length: ".strlen($data)
));
$rtn = curl_exec($curlobj);
if(!curl_errno($curlobj)){
echo $rtn;
} else {
echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
?>
7.用cURL从FTP上下载文件到本地
<?php
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.1.100/downloaddemo.txt");
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_TIMEOUT, 300); // 超时时间 300s
curl_setopt($curlobj, CURLOPT_USERPWD, "kitukeyii:111111"); // FTP用户名:密码
$outfile = fopen('dest.txt', 'wb'); // 保存到本地的文件名
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);
?>
8.用cURL从本地上传文件到FTP
<?php
$curlobj = curl_init();
$localfile = 'ftp01.php';
$fp = fopen($localfile, 'r');
curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.1.100/ftp01_uploaded.php");
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_TIMEOUT, 300); // 超时时间 300s
curl_setopt($curlobj, CURLOPT_USERPWD, "kitukeyii:111111"); // FTP用户名:密码
curl_setopt($curlobj, CURLOPT_UPLOAD, 1);
curl_setopt($curlobj, CURLOPT_INFILE, $fp); // 指定的文件
curl_setopt($curlobj, CURLOPT_INFILESIZE, filesize($localfile));
$rtn = curl_exec($curlobj);
fclose($fp);
if(!curl_errno($curlobj)){
echo "Uploaded successfully.";
} else {
echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
?>
9.用cURL访问HTTPS资源
<?php
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, "https://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js");
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true); // 执行之后不直接打印出来
date_default_timezone_set('PRC');
// 对认证证书来源的检查从证书中检查SSL加密算法是否存在
curl_setopt($curlobj, CURLOPT_SSL_VERIFYPEER, 0);
$output=curl_exec($curlobj); // 执行
curl_close($curlobj); // 关闭cURL
echo $output;
?>