PHP回声线打破

\ n和\ r(我知道它和操作系统有关)有什么区别,回显可以跨平台工作的换行符的最佳方法是什么?

编辑:作为对Jarod的回应,我将使用ths在.txt日志文件中回显换行符,尽pipe我相信我将来会使用它来回显HTML makup到页面上。

  • \n是一个Linux / Unix换行符。
  • \r是经典的Mac OS(非OS X)换行符。 Mac OS X使用上面的unix \n
  • \r\n是Windows换行符。

我通常只是在我们的Linux系统上使用\n ,大多数Windows应用程序都可以处理它。

使用PHP_EOL常量,该常量会自动设置为运行PHP脚本的操作系统的正确换行符。

请注意,这个常量是自PHP 5.0.2以来声明的。

 <?php echo "Line 1" . PHP_EOL . "Line 2"; ?> 

为了向后兼容:

 if (!defined('PHP_EOL')) { switch (strtoupper(substr(PHP_OS, 0, 3))) { // Windows case 'WIN': define('PHP_EOL', "\r\n"); break; // Mac case 'DAR': define('PHP_EOL', "\r"); break; // Unix default: define('PHP_EOL', "\n"); } } 

Jarod的答案包含在各种操作系统上正确使用\ r \ n。 这里有一些历史:

  • \ r或十进制代码为13的ASCII字符在“回车”后被命名为CR。
  • \ n或十进制代码为10的ASCII字符在“换行”之后被命名为“换行”或LF。

术语“回车”和“换行”可以追溯到使用teletypes而不是显示器和键盘的terminal时。 关于电传打字机或打字机,“回车”意味着移动光标并返回到第一列文本,而“换行”意味着旋转滚轮进入下一行。 当时的区别是有道理的。 今天,代表一行文本结尾的组合\ n,\ r,\ r \ n完全是任意的。

PHP4上的PHP_EOL不需要向后兼容性。

需要纠正摩尔关于持续PHP_EOL可用性的声明:“…自PHP 5.0.2开始声明”。

不,从PHP 4.3.10开始就已经有了。 无论如何,任何一个还在运行的人都不应该在这个行业。 截至今天,没有人应该使用比PHP 5更小的东西!

从PHP手册:“PHP_EOL这个平台的正确的”结束行“符号,自PHP 4.3.10和PHP 5.0.2起可用”。