php生成txt文件标题及内容的方法

复制代码 代码如下:

  <?php

  /**

  *1.前几天一哥们工作中他们领导让他写一个上生成文件的类:生成文件,文件类型支持:txt、html、csv、pdf、doc(或者docx)。

  *

  *2.生成的内容是一张表格(像html中的table),参数为:生成文件的类型、生成内容的标题(数组),生成内容(数组,和标题相对应)。

  */

  /*************************************************

  * class name:createFile

  * description:create different type files

  * author:fenghuo

  * date:2013-11-12

  ************************************************/

  /**

  *3.我利用晚上的时间帮他就整理了一个生成txt的文件类.

  ***/

  class createFile{

  public $file_type;

  public $file_name;

  public $file_dir;

  /**

  * 构造函数:初始化生成文件的目录

  */

  public function __construct($file_dir){

  $this->file_dir = $file_dir;

  }

  /**

  * 生成文件的入口函数

  * @string $file_name 文件名

  * @string $file_type 文件类型

  * @array $title 生成内容的标题行

  * @array $data 生成内容

  */

  public function create_file($file_name,$file_type,$title,$data){

  if(empty($data)){

  return false;

  }

  if(!empty($title)){

  if(count($title) != count($data[0])){

  return false;

  }

  }

  if($file_name == ""){

  $file_name = $this->file_name;

  }

  if($file_type == ""){

  $file_type = $this->file_type;

  }

  $fun = 'mk_'.$file_type;

  # 测试点

  echo $fun,'--------------<br/>';

  if( method_exists( $this,$fun))

  {

  $file = $file_name.".".$file_type;

  $this -> $fun ($file,$title,$data);

  return true;

  }else{

  return "NO!";

  }

  }

  /**

  *生成txt类型文件

  *@string $file 文件名

  *@array $title 标题

  *@array $data 内容

  */

  public function mk_txt($file,$title,$data){

  $string = "";

  if(!empty($title)){

  for( $i = 0;$i < count( $title ); $i++ ){

  $string .= ' '. mb_convert_encoding($title[$i],'GBK',"UTF-8");

  }

  $string .="\r\n";

  }

  foreach ( $data as $key =>$var)

  {

  for( $i = 0; $i < count($data[$key]); $i++ ){

  $string .= ' '. mb_convert_encoding($data[$key][$i],'GBK',"UTF-8");

  }

  $string .="\r\n";

  }

  # 测试点

  echo $this->file_dir.$file,'-----123---------<br/>';

  $fp = fopen($this->file_dir.$file, "a+");

  fwrite($fp,$string);

  fclose($fp);

  return true;

  }

  }

  //**************************************

  //测试

  $dir ='E:\dev\ ';

  $file_name = "test";

  $file_type = "txt";

  $title = array("name","sex","age");

  $data[] = array("tom","boy",20);

  $data[] = array("perry","girl",20);

  $file = new createFile($dir);

  $flag = $file-> create_file($file_name,$file_type,$title,$data);

  if($flag == true){

  echo "生成成功";

  }else{

  echo "生成失败";

  }

  ?>