\n 和 \r 之间有什么区别(我知道它与操作系统有关),以及回显跨平台工作的换行符的最佳方法是什么?
编辑:作为对 Jarod 的回应,我将使用 ths 在 .txt 日志文件中回显换行符,但我确信将来我会使用它来将 HTML makup 回显到页面上。
\n 和 \r 之间有什么区别(我知道它与操作系统有关),以及回显跨平台工作的换行符的最佳方法是什么?
编辑:作为对 Jarod 的回应,我将使用 ths 在 .txt 日志文件中回显换行符,但我确信将来我会使用它来将 HTML makup 回显到页面上。
使用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");
}
}
\n
是 Linux/Unix 换行符。\r
是经典的 Mac OS(非 OS X)换行符。Mac OS X 使用上面的 unix \n
。\r\n
是 Windows 换行符。我通常只\n
在我们的 Linux 系统上使用,而且大多数 Windows 应用程序都可以处理它。
Jarod 的答案包含在各种操作系统上正确使用 \r \n 。这里有一些历史:
术语“回车”和“换行”可以追溯到使用电传打字机代替带有监视器和键盘的终端时。对于电传打字机或打字机,“回车”意味着移动光标并返回到文本的第一列,而“换行”意味着旋转滚轮以进入下一行。在那个时候,这种区别是有道理的。今天,表示一行文本结尾的 \n、\r、\r\n 组合完全是任意的。
PHP4 上的 PHP_EOL 不需要向后兼容。
需要更正 Moore 关于恒定 PHP_EOL 可用性的声明:“......自 PHP 5.0.2 起声明。”。
不,它从 PHP 4.3.10 开始就存在了。任何仍在运行比这更少的东西的人无论如何都不应该从事商业活动。到今天为止,没有人应该使用低于 PHP 5 的任何东西!
来自 PHP 手册:“PHP_EOL 此平台的正确‘行尾’符号。自 PHP 4.3.10 和 PHP 5.0.2 起可用”。