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

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

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

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

于 2010-02-11T13:18:25.543 回答
1

代码看起来不错

是不是您正在使用无法处理\n换行符的 Windows 应用程序查看文件?如果你用\n别的东西代替会发生什么?

于 2010-02-11T12:59:11.500 回答
1

阅读有关各种操作系统上的换行符的信息。

Windows 使用CR + LF(ie \r\n) 表示换行,而 UNIX(-like) 系统仅使用LF( \n)。

CR= 回车
LF= 换行

所以你可能必须使用\r\n. 但是像写字板这样的其他程序似乎也只能理解\n


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

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

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

于 2010-02-11T13:04:34.120 回答
0

尝试使用 CRLF 行尾:

"\r\n"
于 2010-02-11T13:00:45.890 回答
0

你可以尝试使用\r\n

于 2010-02-11T13:07:29.793 回答