0

テキストファイルに書き込むfwriteがたくさんあります。ただし、次のデータセットがこのコードがテキストファイルに挿入する最後の行にスタックしているため、各行の後に必要な新しい行 ("\n") が挿入されないようです:

while(odbc_fetch_row($result)){

        if($counter==0){

            $counter3 = 1;

            foreach($column_names as $column_names2){

                if($length!=$counter3){

                    fwrite($write_file, '"'.$column_names2.'",');

                }else{

                    fwrite($write_file, '"'.$column_names2.'"');

                }

                $counter3++;

            }

            //echo 'Never gets executed???';
            fwrite($write_file, "\n");

            $counter = 1;

        }

何が起こっているかについてのアイデアはありますか?

簡単なテストとして「\n\n」を入れました。奇妙なのは、これをメモ帳で表示するとまだくっついているのですが、ワードパッドで表示すると改行が表示されますか?!

4

6 に答える 6

4

他の人が示唆しているように、OS での改行のエンコード方法が原因である可能性があります。

ただし、Windows 固有の "\r\n" を明示的に出力するのではなく、(バイナリではなく) テキスト モードでファイルを開くことをお勧めします。テキスト モードで開く利点は、システムがその OS に適した形式に行末を変換することです。そうすれば、コードはより移植性が高くなり、(うまくいけば) Windows/Linux/Mac などで適切に動作するはずです。

PHP を使用していると仮定すると、「テキスト モード変換フラグ」('t') を fopen に渡すことができます。

于 2010-02-11T13:18:25.543 に答える
1

さまざまなOSの改行についてこれを読んでください。

CR + LFWindowsは(すなわち)を使用して改行を示しますが、\r\nUNIX(-like)システムはLF\n)のみを使用します。

CR=キャリッジリターン
LF=ラインフィード

したがって、おそらくを使用する必要があります\r\n。しかし、ワードパッドのような他のプログラム\nも理解しているようです。


最善の方法は、現在のOSの行末インジケーターを使用するPHP定数を使用し、スクリプトを実行することです。PHP_EOL

fwrite($write_file, PHP_EOL);
于 2010-02-11T13:03:46.410 に答える
1

これはコードの問題ではなく、ビューアの問題です。ビューアを変更すると、問題が解決します。ラインターミネータを視聴者が理解できるもの(\ r \ n)に変更すると、問題も解決します。重要なことは、後でそれを消費するプログラムが理解できるようにラインターミネータを書くことです。ビューアだけの場合は、ラインターミネータを変更します。改行文字だけを期待する別のプログラムの場合は、視聴者を変更します。

于 2010-02-11T13:04:34.120 に答える
1

コードは問題ないようです

\n改行を処理できない Windows アプリケーションでファイルを見ている可能性はありますか? を別のものに置き換えるとどう\nなりますか?

于 2010-02-11T12:59:11.500 に答える
0

使ってみることができます\r\n

于 2010-02-11T13:07:29.793 に答える
0

CRLF 行末を使用してみてください。

"\r\n"
于 2010-02-11T13:00:45.890 に答える