Fwrite - 这是执行的吗?

时间:2010-02-11 12:57:14

标签: php fwrite

我有一堆写入文本文件的fwrit。但是,似乎每行之后我想要的新行(“\ 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”作为快速测试。奇怪的是,如果我在记事本中查看它仍然卡在一起,但如果我在wordpad中查看它会显示换行符?!

6 个答案:

答案 0 :(得分:4)

正如其他人所建议的那样,可能是由于您的操作系统上编码换行符的方式。

但是,我建议您尝试以文本(而不是二进制)模式打开文件,而不是显式输出特定于Windows的“\ r \ n”。在文本模式下打开的优点是系统会将行结尾转换为适合该操作系统的任何格式。这样,您的代码应该更具可移植性,并且(希望)可以在Windows / Linux / Mac等上正常运行。

假设您使用的是PHP,您可以将“文本模式转换标志”('t')传递给fopen。

答案 1 :(得分:1)

代码看起来像o.k.

是否可以使用无法处理\n换行符的Windows应用程序查看该文件?如果用其他东西替换\n会怎样?

答案 2 :(得分:1)

在各种操作系统上阅读关于newlines的内容。

Windows使用CR + LF表示新行(即\r\n),而UNIX(类似)系统仅使用LF\n)。

CR =回车
LF =换行

所以你可能不得不使用\r\n。但像Wordpad这样的其他程序似乎也理解\n - 只是。


最好的方法是,使用PHP constant PHP_EOL使用当前操作系统的行尾指示符,脚本正在运行:

fwrite($write_file, PHP_EOL);

答案 3 :(得分:1)

这不是您的代码的问题,而是您的查看器的问题。改变观众将解决您的问题。将行终止符更改为您的查看者理解的内容(\ r \ n)也将解决问题。重要的是以一种以后将消费它的程序将理解的方式编写行终止符。如果它只是查看器,则更改行终止符。如果它的另一个程序只需要换行符,请更改查看器。

答案 4 :(得分:0)

尝试使用CRLF行结尾:

"\r\n"

答案 5 :(得分:0)

您可以尝试使用\r\n