什么时候使用php_ol是一个好主意?

我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?


当前回答

PHP_EOL(字符串) 此平台的正确“行结束”符号。 自PHP 4.3.10和PHP 5.0.2起可用

当读写服务器文件系统上的文本文件时,可以使用这个常量。

在大多数情况下,行结束并不重要,因为大多数软件都能够处理文本文件,而不管它们的来源。你应该与你的代码保持一致。

如果行结束符很重要,则显式地指定行结束符,而不是使用常量。例如:

HTTP报头必须用\r\n分隔 CSV文件应该使用\r\n作为行分隔符

其他回答

我有一个站点,其中一个日志脚本在用户的操作之后向文本文件写入新一行文本,用户可以使用任何操作系统。

在这种情况下,使用PHP_EOL似乎不是最优的。如果用户是在Mac OS上,并写入文本文件,它将放置\n。当在windows计算机上打开文本文件时,它不会显示换行符。因此,我使用“\r\n”来代替在任何操作系统上打开文件时的工作。

当我的PHP没有浏览器时,我使用PHP_EOL常量。实际上,我间接地使用它。查看下面的示例。 例如,有一个叫code的网站。Golf(基本上是堆栈交换代码,但具有交互性)。有一个PHP只有控制台输出,我需要使用PHP_EOL常量来使用这个。

一种缩短它的方法是,一旦你需要使用PHP_EOL常量,就像这样做:

<?php
echo $n = PHP_EOL;
?>

这声明了变量$n,您可以使用它代替PHP_EOL常量作为换行符。甚至比<br>还要短,而且几乎任何需要换行符的东西都可以使用$n !

您正在编写主要使用单引号字符串的代码。

echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;  
echo 'this other $one'."\n";

如果要输出多行,使用error_log()非常方便。

在我的windows安装中,我发现很多调试语句看起来很奇怪,因为开发人员在拆分字符串时假定unix结尾。

PHP_EOL的定义是,它为您提供正在操作的操作系统的换行符。

在实践中,您几乎不需要这个。考虑以下几个案例:

When you are outputting to the web, there really isn't any convention except that you should be consistent. Since most servers are Unixy, you'll want to use a "\n" anyway. If you're outputting to a file, PHP_EOL might seem like a good idea. However, you can get a similar effect by having a literal newline inside your file, and this will help you out if you're trying to run some CRLF formatted files on Unix without clobbering existing newlines (as a guy with a dual-boot system, I can say that I prefer the latter behavior)

PHP_EOL太长了,真的不值得使用。