当前位置:  开发笔记 > 编程语言 > 正文

PHP Echo Line Breaks

如何解决《PHPEchoLineBreaks》经验,为你挑选了4个好方法。

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

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



1> Andrew Moore..:

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


请注意,输出不一定发送到运行PHP的OS.
这个答案需要标记为正确的答案.我开发了一个应用程序并在Hostmonster.com上测试它们(他们运行RedHat Linux),客户端将代码部署到CentOS盒子.在dev"\n"中按预期呈现换行符; 在CentOS盒子上它没有.一旦我将"\n"更改为PHP_EOL,问题就消失了,代码按预期工作.获得的经验教训:即使prod OS是开发操作系统的派生,即使"\n"应该适用于所有*nix框,如果必须正确实现,那么总是使用PHP_EOL,永远不要"\n"

2> Jarod Elliot..:

\n 是一个Linux/Unix换行符.

\r是一个经典的Mac OS(非OS X)换行符.Mac OS X使用上面的unix \n.

\r\n 是一个Windows换行符.

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


如果我使用\ r \n它会在Linux和Windows中运行吗?另外,如果我这样做,它会在Linux中输出\ r \n作为文本吗?
不,它不会打印,为了最终的兼容性,使用\ r \n

3> Federico A. ..:

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

\ r或带有十进制代码13的ASCII字符在"回车"后命名为CR.

\n,或带有十进制代码10的ASCII字符,在"换行"后命名为"换行符"或LF.

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



4> 小智..:

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起可用".

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有