生成文件:
$data = [
['name' => '西瓜','age'=>26],
['name' => '西瓜1','age'=>26],
];
$fileName = 'e.xml';
$filePath = "D:/phpStudy/WWW/test/";
echo createXml($data,$fileName,$filePath); //调用示例
/**
* 生成xml
* @param $data 要放到xml中的数据,是个二维数组
* @param $fileName 要生成的文件名
* @param $filePath 在哪个目录下生成
* @return string 返回该文件所在的目录和文件名
*/
function createXml($data,$fileName,$filePath){
$xml = "<?xml version='1.0' encoding='utf-8'?>\n";
$xml .= "\n";
foreach ($data as $v) {
$xml .= "\n";
$xml .= ""."" ."\n";
$xml .= "" . "" . "\n";
$xml .= "\n";
}
$xml .= "\n";
file_put_contents($filePath.$fileName,$xml);
return $filePath.$fileName;
}
/**
* 自带下载功能,导出TXT格式
* @param $finame 文件名。数据类型为字符串
* @param $content 文件要写入的内容。数据类型为字符串
* @param string $postfix 要生成什么格式。只有2种.txt和.doc可选。如果是.doc可以生成,里面没有图片和链接的word格式
*/
function createTxt($finame,$content,$postfix='.txt'){
//第一步:处理中文文件名
$ua = $_SERVER["HTTP_USER_AGENT"]; //用的是什么浏览器
$filename = $finame.$postfix; //一定要记得拼.txt。不然程序不知道下载什么格式
$encoded_filename = urlencode($filename); //url编码
$encoded_filename = str_replace("+", "%20", $encoded_filename); //把 + 替换成 %20
//第二步:生成TXT文件
header("Content-Type: application/octet-stream");
if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {
header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
} elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {
header('Content-Disposition: attachment; filename*="utf8' . $filename . '"');
} else {
header('Content-Disposition: attachment; filename="' . $filename . '"');
}
echo $content; //拼接数据并以echo 返回
}
/***将数据导出到txt &&下载* downTxt('hello','D:\phpStudy\WWW\test\down\\',['第1列','第2列','第3列'],$data); //调用示例*@param$fileName要生成的文件名*@param$savePath保存到服务器的地址'D:\phpStudy\WWW\test\down\\'*@param$tableHeader表头,传个一维数组['第1列','第2列','第3列']$data = ['男装'=>['上衣','裤子'],'女装'=>['泡泡袖','连衣裙']];*@param$data数据,传个二维数组$data*/functiondownTxt($fileName,$savePath,$tableHeader,$data){$name=$fileName. date('Y-m-d_H-i-s',time()).".txt";//文件名$path=$savePath.$name;//保存到服务器上的路径$html="\xEF\xBB\xBF";//解决乱码问题//输出表头foreach($tableHeaderas$v) {$html.=$v."\t|";}$html.="\r\n";//遍历二维数组,输出内容foreach($dataas$key=>$value) {$html.=$key."\t|";foreach($valueas$kk=>$vv) {$html.=$vv."\t|";if($kk!= end($value)){//当前key不等于 该数组中的最后一个key$html.="\r\n";//回车,换行}}}//保存文件$txtFile= fopen($path,'a+');fwrite($txtFile,$html);fclose($txtFile);downloadFile($name,$path);//调下载文件的方法}
/**** @@@@下载*/functiondownloadFile($sTitle,$sFilePath){$charset='UTF-8';$attachmentHeader="Content-Disposition: attachment; filename=\"{$sTitle}\"; charset=\"{$charset}\"";// var_dump($attachmentHeader);die;ob_end_clean();ob_start();header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header($attachmentHeader);//ie无法下载 来自 无法打开该internet站点 的问题header("Pragma: public");header("Expires: 0");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Cache-Control: public");header("Content-Description: File Transfer");header("Content-Transfer-Encoding: binary");echofile_get_contents($sFilePath);}
/**
* 自带下载功能,导出csv格式
* @param $taheader表格头部,传个一维数组
* @param $data表格数据,传个二维数组
* @return string
*/
function createCSV($taheader,$data){
$tableheader = $taheader;
$tablelength = count($tableheader);
/*输入到CSV文件 解决乱码问题*/
$html = "\xEF\xBB\xBF";
/*输出表头*/
foreach ($tableheader as $value) {
$html .= $value . "\t ,";
}
$html .= "\n";
/*遍历二维数组,输出内容*/
foreach ($data as $value) {
for ($i = 0; $i < $tablelength; $i++) {
$html .= $value[$i] . "\t ,";
}
$html .= "\n";
}
/*输出CSV文件*/
header("Content-type:text/csv");
header("Content-Disposition:attachment; filename=全部数据.csv");
return $html;
}
/**
* 导出 CSV get方式,直接下载
* @access public
* @param array $nameArr 要 array('导出的表中的字段名'=>'中文命名','导出的表中的字段名'=>'中文命名') 一维数组,表头
* @return array $sqlArr 数据库查出的数据。二维数组
* @return string $name 导出CSV 时的命名
*
* 调用示例
$arr = ['name'=>'姓名','age'=>'年龄'];
$res = [['name'=>'西瓜','age'=>25],['name'=>'杨熙','age'=>26]];
var_dump($arr);
csv($arr,$res,'西瓜');
*/
function csv($nameArr = "", $sqlArr = "", $name = "")
{
foreach ($nameArr as $key => $value) {
iconv('utf-8', 'gbk', $value); //转为中文
$str[] = $value;
}
$str = implode(',', $str);
$str .= "\n"; //用引文逗号分开
foreach ($sqlArr as $key => $value) {
$array = array_change_key_case($value, CASE_LOWER); //返回字符串键名全为小写或大写的数组
$chanJi = array_diff_key($array, $nameArr); //使用键名比较计算数组的差集
$jiaoji[] = array_diff_key($array, $chanJi);
}
$jiaoji = array_values($jiaoji); //只取值
foreach ($jiaoji as $key => $value) {
$arrValues[] = implode(',', $value);
}
$string = implode("\n", $arrValues);
$str .= $string;
// var_dump($str);exit;
$str = iconv('utf-8', 'gbk//TRANSLIT', $str); //转为中文
/*去除特殊符号*/
$regex = "/\/|\~|\!|\|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\|\?|\[|\]|\|\.|\/|\;|\'|\=|\\\|\|/";
$str = preg_replace($regex, "", $str);
$filename = "$name" . date('YmdHis') . '.csv'; //设置文件名
$data = $str;
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=" . $filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $data;exit;
}