如何在txt文件中提供breakline我在txt文件中导出订单详细信息

时间:2014-07-10 05:25:47

标签: php wordpress woocommerce

我需要断行我在浏览器中输出输出,但在下载txt文件时它不在文本文件中。

主要是我需要这种输出

4,
Firstname lastname,address,
orderid,product name ,
eof
4,
Firstname lastname,address,
orderid,product name ,
eof

以上输出我在浏览器中得到它但是当我下载带有header()的txt文件时输出将如下所示

4,Firstname lastname,address,orderid,product name ,eof,4,Firstname lastname,address,orderid,product name ,eof,

另一个奇怪的事情是,当我连接网站的fttp并从那里下载txt文件时,它将显示我需要的正确格式但是当我使用header()时它会弄乱我的txt文件格式

任何人都可以告诉我我的代码在下面的原因

    <?php 

    include('wp-load.php');

    generate_csv();

    function generate_csv()
    {
        global $wpdb;
        $Query = "SELECT posts.ID
        FROM {$wpdb->posts} AS posts
        LEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID=rel.object_ID
        LEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )
        LEFT JOIN {$wpdb->terms} AS term USING( term_id )

        WHERE   posts.post_type   = 'shop_order'
        AND     posts.post_status = 'publish'
        AND     tax.taxonomy      = 'shop_order_status'
        AND     term.slug NOT IN ('completed')";

        //$Query = "SELECT order_id FROM wp_woocommerce_order_items";

        $ResultQuery    = mysql_query( $Query );
        $Orders = array();


        while($ResultArray  = mysql_fetch_assoc($ResultQuery))
        {
            $Orders[] = $ResultArray['ID'];
        }

        /*$list = array (
            array('4')
         );*/
         foreach($Orders as $Order)

          {
            $OrderReport    = new WC_Order($Order);
            $Query = "SELECT user_id FROM wp_usermeta WHERE meta_key = 'first_name' AND meta_value = '".$OrderReport->shipping_first_name."'";
            $QueryGetUserId = mysql_query($Query);
            $GetUserId = mysql_fetch_assoc($QueryGetUserId);
            $Items = $OrderReport->get_items();
            foreach($Items as $Item)
            {
                $ProductID  = $Item['product_id']; 
                $ProductQTY = $Item['qty']; //
            }   
            if($ProductID=='188' or $ProductID=='205')
            {   

                if($ProductID=='188')
                {
                    $ProductID='118945-5';  
                }
                if($ProductID=='205')
                {
                    $ProductID='118946-3';  
                }               
                $GetUserId_csv='42069';


                 $list .= '4'.PHP_EOL .$GetUserId_csv.' '.$OrderReport->id . ',' . ',' . 'FIL' .','.PHP_EOL . '' .$OrderReport->billing_first_name .' '. $OrderReport->billing_last_name . ','. $OrderReport->shipping_address_1 .','. $OrderReport->shipping_address_2 .','. $OrderReport->shipping_city.','.$OrderReport->shipping_state.','.$OrderReport->shipping_postcode.','.$OrderReport->billing_phone.','.'A'.','. 5001 .',' .PHP_EOL . ''. $ProductID .' ,' . ', '. $ProductQTY . ',' . ',' . ','.PHP_EOL .'***EOF***'.PHP_EOL; 

                //$list[]=array('***EOF***');

            }
            $CSVFile = time().'.txt';

            $fp = fopen( $CSVFile, 'w');

            fwrite($fp,$list);

            fclose($fp);


        }

        $path =  site_url( '/', 'relative')."/";
        $file = $path.$CSVFile;

        //sleep(10);

        output_file($CSVFile,$CSVFile, 'text/plain'); //this is the function which help me to download the txt file

    }

  ?>

    // function of out_file is below



     function output_file($Source_File, $Download_Name, $mime_type='')
      {
     /* 
       $Source_File = path to a file to output
       $Download_Name = filename that the browser will see
       $mime_type = MIME type of the file (Optional)
      */
      if(!is_readable($Source_File)) die('File not found or inaccessible!');

       $size = filesize($Source_File);
       $Download_Name = rawurldecode($Download_Name);

        /* Figure out the MIME type (if not specified) */
        $known_mime_types=array(
    "pdf" => "application/pdf",
    "csv" => "application/csv",
    "txt" => "text/plain",
    "html" => "text/html",
    "htm" => "text/html",
    "exe" => "application/octet-stream",
    "zip" => "application/zip",
    "doc" => "application/msword",
    "xls" => "application/vnd.ms-excel",
    "ppt" => "application/vnd.ms-powerpoint",
    "gif" => "image/gif",
    "png" => "image/png",
    "jpeg"=> "image/jpg",
    "jpg" =>  "image/jpg",
    "php" => "text/plain"
        );

       if($mime_type==''){
       $file_extension = strtolower(substr(strrchr($Source_File,"."),1));
       if(array_key_exists($file_extension, $known_mime_types)){
        $mime_type=$known_mime_types[$file_extension];
        } else {
        $mime_type="application/force-download";
     };
     };

    @ob_end_clean(); //off output buffering to decrease Server usage

    // if IE, otherwise Content-Disposition ignored
    if(ini_get('zlib.output_compression'))
    ini_set('zlib.output_compression', 'Off');

    header('Content-Type: ' . $mime_type);
    header('Content-Disposition: attachment; filename="'.$Download_Name.'"');
    header("Content-Transfer-Encoding: binary");
    header('Accept-Ranges: bytes');

    header("Cache-control: private");
    header('Pragma: private');
    header("Expires: Thu, 26 Jul 2012 05:00:00 GMT");

    // multipart-download and download resuming support
    if(isset($_SERVER['HTTP_RANGE']))
    {
    list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
    list($range) = explode(",",$range,2);
    list($range, $range_end) = explode("-", $range);
    $range=intval($range);
    if(!$range_end) {
        $range_end=$size-1;
    } else {
        $range_end=intval($range_end);
    }

    $new_length = $range_end-$range+1;
    header("HTTP/1.1 206 Partial Content");
    header("Content-Length: $new_length");
    header("Content-Range: bytes $range-$range_end/$size");
     } else {
    $new_length=$size;
    header("Content-Length: ".$size);
      }

      /* output the file itself */
      $chunksize = 1*(1024*1024); //you may want to change this
      $bytes_send = 0;
      if ($Source_File = fopen($Source_File, 'r'))
      {
        if(isset($_SERVER['HTTP_RANGE']))
         fseek($Source_File, $range);

         while(!feof($Source_File) &&
          (!connection_aborted()) &&
          ($bytes_send<$new_length)
           )
      {
        $buffer = fread($Source_File, $chunksize);
        print($buffer); //echo($buffer); // is also possible
        flush();
        $bytes_send += strlen($buffer);
    }
     fclose($Source_File);
      } else die('Error - can not open file.');

    die();
     }

2 个答案:

答案 0 :(得分:0)

尝试\ n而不是文本文件的EOL。

答案 1 :(得分:0)

您可以尝试\ r \ n而不是\ n。