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

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


当前回答

我刚刚在输出到Windows客户端时遇到了这个问题。当然,PHP_EOL是针对服务器端的,但是php的大部分内容输出都是针对windows客户端的。所以我必须把我的发现放在这里给下一个人看。

A)呼应“我的短信”。PHP_EOL;//不好,因为这只是输出\n,大多数版本的windows记事本显示在一行上,大多数windows会计软件不能导入这种类型的行结束字符。

B)回复“My Text \r\n”;//不好,因为单引号php字符串不解释\r\n

C)回复“My Text \r\n”;//太棒了!在记事本中看起来正确,并在将文件导入到其他windows软件(如windows会计和windows制造软件)时工作。

其他回答

我正在使用WebCalendar,发现Mac iCal在导入生成的ics文件时呕吐,因为行尾在xcal.php中硬编码为“\r\n”。我进去,用PHP_EOL替换了所有的事件,现在iCal是快乐的! 我还在Vista和Outlook上进行了测试,即使行尾字符是“\n”,也能导入文件。

DOS/Windows标准的换行符是CRLF (= \r\n)而不是LFCR (\n\r)。如果我们选择后者,很可能会产生一些意想不到的结果(好吧,实际上是意料之中的!): D)的行为。

现在,几乎所有(编写良好的)程序都接受UNIX标准LF (\n)作为换行代码,甚至邮件发送守护进程(RFC将CRLF设置为标题和消息正文的换行)。

当我的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";

它的艺术在于始终如一。混合和匹配"和"的问题是,当你得到很长的字符串时,你真的不想去寻找你使用的引用类型。

就像生活中的所有事情一样,这取决于上下文。

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

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