如何使用PHP和MYSQL数据编写固定宽度的文本文件

时间:2012-05-05 08:52:52

标签: php text

我在使用php和来自mysql db的数据编写固定宽度文本文件时遇到了问题。 Pl找到我有一个客户表的格式: 客户名称为100个字符宽度 客户地址为200个字符宽度。

我需要以下面的格式打印这些。

3M India Limited                         Plot 48-51 Electronic City
Biocon Ltd                               20th KM Hosur Road,Electronic city

现在我的客户名称不断变化,但我需要修复此宽度,然后打印地址。下面是我的代码,我手动提供的空格导致数据在文本文件中写入时随意丢失。

php代码:

$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "    ".$cust2[Ac_desc];
fwrite($fh, $stringData);
$stringData = "                                        ".$cust2[Add1]."\n";
fwrite($fh, $stringData);
fclose($fh);

3 个答案:

答案 0 :(得分:4)

首先,确保您的Ac_descAdd1是定义的常量,或引用它们作为关联索引。

其次,尝试str_pad()功能。

fwrite($fh, str_pad($cust2['Ac_desc'], 100));
fwrite($fh, str_pad($cust2['Add1'], 200));

答案 1 :(得分:1)

首先确定第一列的静态宽度,比如100个字符。

然后尝试使用此代码

$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "    ".$cust2[Ac_desc];
$spaces = 100 - strlen($cust2[Ac_desc]); // get the number of spaces to add
fwrite($fh, $stringData);
$stringData = str_repeat(" ",$spaces).$cust2[Add1]."\n";
fwrite($fh, $stringData);
fclose($fh);

答案 2 :(得分:0)

您可以使用MySQL的RPAD()函数及其SELECT ... INTO OUTFILE命令:

SELECT
  RPAD(ColumnA, @width, ' '),
  RPAD(ColumnB, @width, ' '),
  -- etc.
INTO OUTFILE '/path/to/file.prn'
FIELDS TERMINATED BY '' ENCLOSED BY '' ESCAPED BY ''
LINES  TERMINATED BY '\n' STARTING BY ''