什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
当前回答
您正在编写主要使用单引号字符串的代码。
echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;
echo 'this other $one'."\n";
其他回答
我在必须编写的一些命令行脚本中使用PHP_EOL常量。我在本地Windows机器上进行开发,然后在Linux服务器上进行测试。使用常量意味着我不必担心为每个不同的平台使用正确的行尾。
我想提出一个解决“什么时候不使用它”的答案,因为它还没有被覆盖,可以想象它被盲目地使用,直到后来才有人注意到有问题。这与现有的答案有些矛盾。
如果在HTML中输出到网页,特别是<textarea>, <pre>或<code>中的文本,您可能总是想使用\n而不是PHP_EOL。
原因是,虽然代码可能在一台服务器上工作得很好-这恰好是一个类unix平台-如果部署在Windows主机(如Windows Azure平台)上,那么它可能会改变页面在某些浏览器(特别是Internet Explorer -某些版本将看到\n和\r)中的显示方式。
我不确定自IE6以来这是否仍然是一个问题,所以它可能是相当有争议的,但似乎值得一提,如果它有助于人们思考上下文。在其他情况下(比如严格的XHTML),在某些平台上突然输出\r可能会导致输出出现问题,我相信还有其他类似的边缘情况。
有人已经指出,当返回HTTP报头时,你不会想要使用它——因为它们在任何平台上都应该始终遵循RFC。
我不会将它用于CSV文件上的分隔符之类的东西(就像有人建议的那样)。服务器运行的平台不应该决定生成或使用的文件中的行结束符。
有一个明显的地方它可能有用:当您编写主要使用单引号字符串的代码时。有争议的是:
echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;
echo 'this other $one'."\n";
它的艺术在于始终如一。混合和匹配"和"的问题是,当你得到很长的字符串时,你真的不想去寻找你使用的引用类型。
就像生活中的所有事情一样,这取决于上下文。
当我的PHP没有浏览器时,我使用PHP_EOL常量。实际上,我间接地使用它。查看下面的示例。 例如,有一个叫code的网站。Golf(基本上是堆栈交换代码,但具有交互性)。有一个PHP只有控制台输出,我需要使用PHP_EOL常量来使用这个。
一种缩短它的方法是,一旦你需要使用PHP_EOL常量,就像这样做:
<?php
echo $n = PHP_EOL;
?>
这声明了变量$n,您可以使用它代替PHP_EOL常量作为换行符。甚至比<br>还要短,而且几乎任何需要换行符的东西都可以使用$n !
当jumi (joomla plugin for PHP)出于某种原因编译你的代码时,它会从你的代码中删除所有的反斜杠。例如$csv_output .= "\n";$csv_output .= "n";
非常讨厌的虫子!
使用PHP_EOL来获得您想要的结果。