我在使用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);
答案 0 :(得分:4)
首先,确保您的Ac_desc
和Add1
是定义的常量,或引用它们作为关联索引。
其次,尝试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 ''