文本文件回车不显示PHP_EOL

时间:2016-10-31 01:20:13

标签: php text

我正在使用PHP_EOL在PHP中为文本文件添加新行。我理解换行和回车之间的区别,但是当我导出文本文件并通过十六进制编辑器查看而不是看到0D0A(回车,换行)时,我只看到0A(换行)每一行。

通常情况下这不是问题,但上游程序需要在每一行的末尾看到0D0A。

我坚持这一点,并希望得到一些帮助。

我也试过" \ r \ n"但这会产生更糟糕的事情。而不是0D0A,它产生的是0A0A或\ n \ n!

另外需要注意的是,这是托管在Linux系统上并通过Windows下载(不知道操作系统是否重要下载)

由于

1 个答案:

答案 0 :(得分:0)

取决于托管脚本的系统,\ n和\ r具有相同的含义,但是在非常陈旧的服务器上,PHP_EOL可能是未定义的,我始终使用此位代码来保存我的PHP_EOL:

<?php
  if (!defined('PHP_EOL')) {
    if (strtoupper(substr(PHP_OS,0,3) == 'WIN')) {
      define('PHP_EOL',"\r\n");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'MAC')) {
      define('PHP_EOL',"\r");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'DAR')) {
      define('PHP_EOL',"\n");
    } else {
      define('PHP_EOL',"\n");
    }
  }
?>

因此,您可以毫无问题地使用PHP_EOL ... PHP_EOL表示\ n或\ r或\ r \ n ...

注意:PHP_EOL可以

1) on Unix    LN    == \n
2) on Mac     CR    == \r
3) on Windows CR+LN == \r\n
4) on Darwin  LN    == \n

达尔文是MacOS X,与Unix类似,并且具有相同的行尾...

希望获得帮助。