将Mysql导出到.txt - 如何格式化文本?

时间:2011-12-16 13:34:19

标签: php

我正在将一些mysql数据导出到文本文件中。可以通过表格中的复选框选择数据。

我想格式化文本文件中的文本。我该怎么做?

这是我的代码:

 <?php
if ($_POST['exporttxt']) {
for($i=0;$i<count($_POST['checkbox']);$i++){
   $export_id = $checkbox[$i];
$text = mysql_query("SELECT code FROM tickets WHERE id='$export_id'");
$text = mysql_fetch_assoc($text);
$text = $text["code"];
$filename = "export";
$filedate = date("Y-m-d");
$fileext = ".txt";
$fileall = $filename.$filedate.$fileext;
ob_end_clean();
    header("Content-Type: application/octet-stream");
header("Content-disposition: attachment;filename=\"$fileall\"");
   header("Content-Type: application/force-download");

    header("Content-Type: application/download");
    header("Content-Description: File Transfer");
    header("Content-Length: ".strlen($output).";\n");



echo($text);


}
}

exit();

?>

将导出的数据是包含16位数的数字。在每个数字之后我想要一个换行符。如果可能的话,我希望每个数字都有4位数后的空格,例如:

未格式化的数字:1234567891234567 数字格式:1234 5678 9123 4567

我该怎么做?

3 个答案:

答案 0 :(得分:3)

使用chunk_split

echo chunk_split($text, 4, " "); <-- you seems forgotten a line break

偏离话题: -

  1. $output定义在哪里?
  2. 您没有ob_start()
  3. 重复使用$ text表示各种数据类型(mysql结果资源,数组,字符串)

答案 1 :(得分:2)

您需要将数字表示为字符串:

$num = preg_replace("/(?<=\d)(?=(\d{4})+(?!\d))/", " ", $num);

"1234567891234567"变为"1234 5678 9123 4567"

新行将由\n

表示

答案 2 :(得分:1)

试试这个 - &gt;

// divide in to chunks of 4 characters
$chunks = str_split($text['code'], 4);
//Convert array to string.  Each element separated by the given separator.
$result = implode(' ', $chunks);

工作示例:http://codepad.org/4Zf1ABKX