【发布时间】:2016-10-31 01:20:13
【问题描述】:
我正在使用 PHP_EOL 在 PHP 中的文本文件中添加新行。我了解换行和回车之间的区别,但是当我导出文本文件并通过十六进制编辑器查看它而不是看到 0D0A(回车,换行)时,我最后只看到 0A(这是换行)每一行。
通常这不会有问题,但上游程序需要在每行的末尾看到 0D0A。
我被困在这个问题上,希望能得到一些帮助。
我也尝试过 "\r\n" 但这会产生更糟的结果。它产生的不是 0D0A 而是 0A0A 或 \n\n!
另外需要注意的是,这是托管在 linux 系统上并使用 windows 下载的(不知道操作系统下载它是否重要)
谢谢
【问题讨论】:
-
PHP_EOL在执行脚本的机器环境中被解释。因此,如果您在 Linux 机器上执行它,那么它将始终输出\n,同样,如果您在 Windows 服务器上运行相同的 php 脚本,那么它将输出微软认为适合在其无限智慧中使用的任何损坏的行结尾。 -
感谢杰夫,这是有道理的。所以按照这个逻辑,我应该正确使用“\r\n”。但这会导致双换行......所有这一切中最奇怪的部分是这个确切的脚本运行良好,但直到一周前。
-
我不知道,这很奇怪。试试
echo chr(0x0D);看看是否至少会吐出文字字符。由于它最近发生了变化,请检查您的更改日志。如果您通过二进制搜索检查自上次工作代码以来的提交,应该很容易确定您是否使用版本控制。