\n和\ r \n之间有什么区别(我知道它与操作系统有关),什么是回应跨平台工作的换行符的最佳方式?
编辑:为了回应Jarod,我将使用它来回显.txt日志文件中的换行符,但我相信我将来会用它来回复HTML makup到页面上.
使用PHP_EOL
常量,该常量自动设置为运行PHP脚本的操作系统的正确换行符.
请注意,此常量从PHP 5.0.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的正确用法.这是一些历史:
\ r或带有十进制代码13的ASCII字符在"回车"后命名为CR.
\n,或带有十进制代码10的ASCII字符,在"换行"后命名为"换行符"或LF.
术语"回车"和"换行"可追溯到使用电传类型而不是带有监视器和键盘的终端时.对于电传类型或打字机,"回车"意味着移动光标并返回到第一列文本,而"换行"意味着旋转滚轮以进入下一行.那时的区别是有道理的.今天,组合\n,\ r,\ r \n来表示一行文本的结尾是完全任意的.
PHP4上的PHP_EOL不需要向后兼容性.
需要纠正Moore关于常量PHP_EOL可用性的声明:"...从PHP 5.0.2开始声明.".
不,它自PHP 4.3.10以来一直存在.任何仍然运行任何小于此的人都不应该在商业中.截至今天,没有人应该使用比PHP 5更小的东西!
从PHP手册:"PHP_EOL此平台的正确'End-Line'符号.自PHP 4.3.10和PHP 5.0.2起可用".