PHP Echo Line Breaks

时间:2008-11-01 04:02:46

标签: php cross-platform newline eol line-breaks

\ n和\ r \ n之间有什么区别(我知道它与操作系统有关),什么是回应跨平台工作的换行符的最佳方式?

编辑:为了回应Jarod,我将使用它来回显.txt日志文件中的换行符,但我相信我将来会使用它诸如将HTML makup回显到页面上之类的东西。

4 个答案:

答案 0 :(得分:122)

使用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");
    }
}

答案 1 :(得分:44)

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

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

答案 2 :(得分:31)

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

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

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

答案 3 :(得分:7)

PHP4上PHP_EOL不需要向后兼容。

需要纠正Moore关于常量PHP_EOL可用性的声明:“...从PHP 5.0.2开始声明。”。

不,它自PHP 4.3.10开始就存在。任何仍然运行任何小于此的人都不应该在商业中。截至今天,没有人应该使用比PHP 5更小的东西!

From the PHP manual: "PHP_EOL The correct 'End Of Line' symbol for this platform. Available since PHP 4.3.10 and PHP 5.0.2".