什么是 \n 和 \r 的区别(我知道这与操作系统有关),以及在跨平台环境下,最佳的换行符输出方法是什么?
编辑:响应Jarod的要求,我将使用此方法在 .txt 日志文件中输出换行符,尽管我相信我将来会用它来输出HTML标记到页面上。
什么是 \n 和 \r 的区别(我知道这与操作系统有关),以及在跨平台环境下,最佳的换行符输出方法是什么?
编辑:响应Jarod的要求,我将使用此方法在 .txt 日志文件中输出换行符,尽管我相信我将来会用它来输出HTML标记到页面上。
使用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");
}
}
preg_match
未检测到行尾而来到这里的人,请将$
替换为(?:\r\n|\r|\n|$)
(其中?:
是一个非捕获正则表达式组)。 - CPHPython\n
是Linux/Unix系统中的换行符。\r
是一个经典的Mac OS(非OS X)的换行符。Mac OS X使用上面提到的Unix的\n
。\r\n
是Windows系统的换行符。我通常只在我们的Linux系统中使用\n
,大多数Windows应用程序也可以很好地处理它。
\n
гҖӮ\r
зҺ°еңЁе·Із»Ҹе®Ңе…ЁиҝҮж—¶дәҶгҖӮ - Raphael SchweikertJarod的答案包含了在不同操作系统上使用 \r \n 的正确方法。以下是一些历史背景:
“回车符”和“换行符”的术语可以追溯到使用打字机或电传打字机而不是带有监视器和键盘的终端时期。对于电传打字机或打字机,“回车符”意味着移动光标并返回文本的第一列,而“换行符”意味着旋转滚轮以进入下一行。那个时候区分是有意义的。今天使用 \n、\r、\r\n 表示文本行结束的组合已经完全是任意的。
在PHP4上,PHP_EOL不需要向后兼容。
需要更正Moore对常量PHP_EOL可用性的说法:“……是从PHP 5.0.2开始声明的。”
不,它自PHP 4.3.10以来就一直存在了。任何仍在使用低于这个版本的人都不应该参与商业活动。截至今天,没有人应该使用低于PHP 5的版本!