//获取http头信息
function get_http_header(){
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
//导出.csv文件
function export_csv($headers = array(),$bodys = array(),$csv_file) {
$head = implode(";", $headers);
$header = iconv('utf-8', 'gb2312', $head);
$body = array();
foreach ($bodys as $key){
$string = iconv('utf-8', 'gb2312',implode(";", $key) );
$body[] = $string;
}
$fp = fopen($csv_file,"w");
$count = 0;
if($fp){
if(fputcsv($fp, explode(";",$header))) $count ++;
foreach($body as $line){
if(fputcsv($fp, explode(";",$line))) $count ++;
}
}
fclose($fp);
$length = 1 + count($body);
if($count == $length) return TRUE;
else return FALSE;
}
//下载文件或下载.zip文件
function download_data($file = '',$flag = FALSE){
if(!$file){
return FALSE;
}
if($flag == TRUE){
$zip = new ZipArchive();
$filename = dirname($file)."/".time().'.zip';
$zip->open($filename,ZipArchive::CREATE);
$zip->addFile($file);
$zip->close();
header ( "Content-Type: application/zip" );
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($filename));
header("Content-disposition: attachment; filename=".basename($filename));
readfile($filename);
unlink($filename);
}else{
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header("Content-disposition: attachment; filename=".basename($file));
readfile($file);
}
return TRUE;
}
//curl获取网页信息
function get_curl_res($url = '', $data = array()){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
// curl_setopt($ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC);
// curl_setopt($ch, CURLOPT_USERPWD , 'api:key-71390a3b5b52e5918f88f2f0e91fc580');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec( $ch );
curl_close( $ch );
var_dump($res);
}
//格式化输出
function render_output( $data ,$format = 'json' , $http_code = 200){
switch($http_code){
default:
case 200:
break;
case 403:
header('HTTP/1.0 403 Forbidden');
break;
case 400:
header('HTTP/1.0 400 Bad Request');
break;
}
switch($format){
case 'xml':
require_once SYSDIR.'/libraries/lib/array2xml.php';
Array2XML::init('1.0', 'utf-8');
$array2xml = Array2XML::createXML('response', $data);
header('Content-type: application/xhtml+xml');
die( $array2xml->saveXML() );
break;
case 'json':
header("Content-type: application/json");
die(json_encode($data));
break;
case 'jsonp':
$ci = &get_instance();
$cb = $ci->input->get('cb') ? $ci->input->get('cb') : 'callback';
header("Content-type: application/json");
exit( $cb.'('.json_encode($data).')');
break;
}
}
function curl_get($url = '', $timeout=5){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
return $file_contents;
}
function curl_post($url = '', $params = array(), $timeout = 30){
$ch = curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL,$url);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return($data);//输出结果
}
function curl_get_https($url = ''){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11');
$res = curl_exec($ch);
$rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch) ;
return $res;
}
//写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
function my_scandir($dir = ''){
$files=array();
if(is_dir($dir)) {
if($handle=opendir($dir)) {
while(($file=readdir($handle))!==false) {
if($file!="." && $file!="..") {
if(is_dir($dir."/".$file)) {
$files[$file]=my_scandir($dir."/".$file);
}
else {
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return $files;
}
}
}
//删除指定目录下的所有文件,不删除目录文件夹
function delfile_underdir($dir = ''){
if($handle = opendir($dir)){
while(FALSE !== ($item = readdir($handle))){
if(!in_array($item,array('.','..'))){
if(is_dir($dir.'/'.$item)){
delfile_underdir($dir.'/'.$item);
}else{
if(unlink($dir.'/'.$item)){
echo "Delete $dir/$item success"."[".date('Y-m-d H:i:s')."]\n";
}
}
}
}
closedir($handle);
}
}
//读取文件的后缀名
function get_file_ext($filename = '', $type = 1){
if($type == 1){
//方法一:先把文件名切割成数组,然后想办法取得数组最后一个元素
$pic = explode('.',$filename);
return $pic[count($pic)-1];
}elseif($type == 2){
//用pathinfo()函数。
$pic = pathinfo($filename);
$pic['extension'];
}
}
//获取当前页面完整url地址的函数
function get_current_url(){
$url = (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ? 'https://' : 'http://';
$url .= $_SERVER['HTTP_HOST'];
$url .= isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : urlencode($_SERVER['PHP_SELF']) . '?' . urlencode($_SERVER['QUERY_STRING']);
return $url;
}
//计算一年多少个星期,返回一个星期的开始时间和结束时间(可选返回时间戳或日期)
function getWeekStartAndEnd ($year,$week=1) {
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
$year = (int)$year;
$week = (int)$week;
//按给定的年份计算本年周总数
$date = new DateTime;
$date->setISODate($year, 53);
$weeks = max($date->format("W"),52);
//如果给定的周数大于周总数或小于等于0
if($week>$weeks || $week<=0){
return false;
}
//如果周数小于10
if($week<10){
$week = '0'.$week;
}
//当周起止时间戳
$timestamp['start'] = strtotime($year.'W'.$week);
$timestamp['end'] = strtotime('+1 week -1 day',$timestamp['start']);
//当周起止日期
$timeymd['start'] = date("Y-m-d",$timestamp['start']);
$timeymd['end'] = date("Y-m-d",$timestamp['end']);
//返回起始时间戳
return $timestamp;
//返回日期形式
//return $timeymd;
}
function utf8_to_gbk( $message = '' )
{
$msg = iconv('utf-8', 'gbk', $message);
if (!$msg) {
$msg = '';
for ($i = 0; $i <= mb_strlen($message, 'utf-8'); $i++) {
$str = mb_substr($message, $i, 1, 'utf-8');
$res = @iconv('utf-8', 'gbk', $str);
if ($res) {
$msg .= $res;
}
}
}
return $msg;
}
// This method generates a csv file and then returns the generated content
if (!function_exists('arrayToCSV')) {
function arrayToCSV($query, $fields, $filename = "CSV") {
if (count($query) == 0) {
return "The query is empty. It doesn't have any data.";
} else {
$headers = rowCSV($fields);
$data = "";
foreach ($query as $row) {
$line = rowCSV($row);
$data .= trim($line) . "\n";
}
$data = str_replace("\r", "", $data);
$content = $headers . $data;
$filename = date('YmdHis') . "_export_{$filename}.csv";
header("Content-Description: File Transfer");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename={$filename}");
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
header("Cache-Control: must-revalidate");
header("Pragma: public");
header("Content-Length: " . strlen($content));
return $content;
}
}
}
function rowCSV($fields) {
$output = '';
$separator = '';
foreach ($fields as $field) {
if (preg_match('/\\r|\\n|,|"/', $field)) {
$field = '"' . str_replace('"', '""', $field) . '"';
}
$output .= $separator . $field;
$separator = ',';
}
return $output . "\r\n";
}
function get_http_header(){
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
//导出.csv文件
function export_csv($headers = array(),$bodys = array(),$csv_file) {
$head = implode(";", $headers);
$header = iconv('utf-8', 'gb2312', $head);
$body = array();
foreach ($bodys as $key){
$string = iconv('utf-8', 'gb2312',implode(";", $key) );
$body[] = $string;
}
$fp = fopen($csv_file,"w");
$count = 0;
if($fp){
if(fputcsv($fp, explode(";",$header))) $count ++;
foreach($body as $line){
if(fputcsv($fp, explode(";",$line))) $count ++;
}
}
fclose($fp);
$length = 1 + count($body);
if($count == $length) return TRUE;
else return FALSE;
}
//下载文件或下载.zip文件
function download_data($file = '',$flag = FALSE){
if(!$file){
return FALSE;
}
if($flag == TRUE){
$zip = new ZipArchive();
$filename = dirname($file)."/".time().'.zip';
$zip->open($filename,ZipArchive::CREATE);
$zip->addFile($file);
$zip->close();
header ( "Content-Type: application/zip" );
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($filename));
header("Content-disposition: attachment; filename=".basename($filename));
readfile($filename);
unlink($filename);
}else{
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header("Content-disposition: attachment; filename=".basename($file));
readfile($file);
}
return TRUE;
}
//curl获取网页信息
function get_curl_res($url = '', $data = array()){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
// curl_setopt($ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC);
// curl_setopt($ch, CURLOPT_USERPWD , 'api:key-71390a3b5b52e5918f88f2f0e91fc580');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec( $ch );
curl_close( $ch );
var_dump($res);
}
//格式化输出
function render_output( $data ,$format = 'json' , $http_code = 200){
switch($http_code){
default:
case 200:
break;
case 403:
header('HTTP/1.0 403 Forbidden');
break;
case 400:
header('HTTP/1.0 400 Bad Request');
break;
}
switch($format){
case 'xml':
require_once SYSDIR.'/libraries/lib/array2xml.php';
Array2XML::init('1.0', 'utf-8');
$array2xml = Array2XML::createXML('response', $data);
header('Content-type: application/xhtml+xml');
die( $array2xml->saveXML() );
break;
case 'json':
header("Content-type: application/json");
die(json_encode($data));
break;
case 'jsonp':
$ci = &get_instance();
$cb = $ci->input->get('cb') ? $ci->input->get('cb') : 'callback';
header("Content-type: application/json");
exit( $cb.'('.json_encode($data).')');
break;
}
}
function curl_get($url = '', $timeout=5){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
return $file_contents;
}
function curl_post($url = '', $params = array(), $timeout = 30){
$ch = curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL,$url);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return($data);//输出结果
}
function curl_get_https($url = ''){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11');
$res = curl_exec($ch);
$rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch) ;
return $res;
}
//写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
function my_scandir($dir = ''){
$files=array();
if(is_dir($dir)) {
if($handle=opendir($dir)) {
while(($file=readdir($handle))!==false) {
if($file!="." && $file!="..") {
if(is_dir($dir."/".$file)) {
$files[$file]=my_scandir($dir."/".$file);
}
else {
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return $files;
}
}
}
//删除指定目录下的所有文件,不删除目录文件夹
function delfile_underdir($dir = ''){
if($handle = opendir($dir)){
while(FALSE !== ($item = readdir($handle))){
if(!in_array($item,array('.','..'))){
if(is_dir($dir.'/'.$item)){
delfile_underdir($dir.'/'.$item);
}else{
if(unlink($dir.'/'.$item)){
echo "Delete $dir/$item success"."[".date('Y-m-d H:i:s')."]\n";
}
}
}
}
closedir($handle);
}
}
//读取文件的后缀名
function get_file_ext($filename = '', $type = 1){
if($type == 1){
//方法一:先把文件名切割成数组,然后想办法取得数组最后一个元素
$pic = explode('.',$filename);
return $pic[count($pic)-1];
}elseif($type == 2){
//用pathinfo()函数。
$pic = pathinfo($filename);
$pic['extension'];
}
}
//获取当前页面完整url地址的函数
function get_current_url(){
$url = (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ? 'https://' : 'http://';
$url .= $_SERVER['HTTP_HOST'];
$url .= isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : urlencode($_SERVER['PHP_SELF']) . '?' . urlencode($_SERVER['QUERY_STRING']);
return $url;
}
//计算一年多少个星期,返回一个星期的开始时间和结束时间(可选返回时间戳或日期)
function getWeekStartAndEnd ($year,$week=1) {
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
$year = (int)$year;
$week = (int)$week;
//按给定的年份计算本年周总数
$date = new DateTime;
$date->setISODate($year, 53);
$weeks = max($date->format("W"),52);
//如果给定的周数大于周总数或小于等于0
if($week>$weeks || $week<=0){
return false;
}
//如果周数小于10
if($week<10){
$week = '0'.$week;
}
//当周起止时间戳
$timestamp['start'] = strtotime($year.'W'.$week);
$timestamp['end'] = strtotime('+1 week -1 day',$timestamp['start']);
//当周起止日期
$timeymd['start'] = date("Y-m-d",$timestamp['start']);
$timeymd['end'] = date("Y-m-d",$timestamp['end']);
//返回起始时间戳
return $timestamp;
//返回日期形式
//return $timeymd;
}
function utf8_to_gbk( $message = '' )
{
$msg = iconv('utf-8', 'gbk', $message);
if (!$msg) {
$msg = '';
for ($i = 0; $i <= mb_strlen($message, 'utf-8'); $i++) {
$str = mb_substr($message, $i, 1, 'utf-8');
$res = @iconv('utf-8', 'gbk', $str);
if ($res) {
$msg .= $res;
}
}
}
return $msg;
}
// This method generates a csv file and then returns the generated content
if (!function_exists('arrayToCSV')) {
function arrayToCSV($query, $fields, $filename = "CSV") {
if (count($query) == 0) {
return "The query is empty. It doesn't have any data.";
} else {
$headers = rowCSV($fields);
$data = "";
foreach ($query as $row) {
$line = rowCSV($row);
$data .= trim($line) . "\n";
}
$data = str_replace("\r", "", $data);
$content = $headers . $data;
$filename = date('YmdHis') . "_export_{$filename}.csv";
header("Content-Description: File Transfer");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename={$filename}");
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
header("Cache-Control: must-revalidate");
header("Pragma: public");
header("Content-Length: " . strlen($content));
return $content;
}
}
}
function rowCSV($fields) {
$output = '';
$separator = '';
foreach ($fields as $field) {
if (preg_match('/\\r|\\n|,|"/', $field)) {
$field = '"' . str_replace('"', '""', $field) . '"';
}
$output .= $separator . $field;
$separator = ',';
}
return $output . "\r\n";
}