0

phpとmysqldbからのデータを使用して固定幅のテキストファイルを書き込む際に問題があります。顧客テーブルがある以下の形式を見つけてください: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);
4

3 に答える 3

4

まず、Ac_descAdd1が定義された定数であることを確認するか、それらを引用して連想インデックスとして扱います。

次に、str_pad()関数を試してください。

fwrite($fh, str_pad($cust2['Ac_desc'], 100));
fwrite($fh, str_pad($cust2['Add1'], 200));
于 2012-05-05T08:59:02.247 に答える
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);
于 2012-05-05T09:03:23.473 に答える
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 ''
于 2012-05-05T09:12:26.073 に答える