什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
当前回答
当你想要一个新的行,并且你想跨平台的时候,你可以使用PHP_EOL。
这可能发生在将文件写入文件系统时(日志、导出、其他)。
如果您希望生成的HTML具有可读性,则可以使用它。所以可以在<br />后面加上PHP_EOL。
如果你在cron上运行php脚本,你需要输出一些东西,并将其格式化后显示在屏幕上,你就可以使用它。
如果你要发送一封需要一些格式的电子邮件,你可以使用它。
其他回答
不,PHP_EOL不处理端点问题,因为使用该常量的系统与将输出发送到的系统不同。
我完全不建议使用PHP_EOL。Unix/Linux使用\n, MacOS / OS X也从\r改为\n,在Windows上,许多应用程序(特别是浏览器)也可以正确显示它。在Windows上,更改现有的客户端代码仅使用\n并保持向后兼容性也很容易:只需将行切边的分隔符从\r\n更改为\n,并将其包装在类似trim()的函数中。
我发现PHP_EOL对于文件处理非常有用,特别是在向文件中写入多行内容时。
例如,您有一个很长的字符串,希望在写入普通文件时将其分解成多行。使用\r\n可能行不通,所以简单地将PHP_EOL放入脚本,结果非常棒。
看看下面这个简单的例子:
<?php
$output = 'This is line 1' . PHP_EOL .
'This is line 2' . PHP_EOL .
'This is line 3';
$file = "filename.txt";
if (is_writable($file)) {
// In our example we're opening $file in append mode.
// The file pointer is at the bottom of the file hence
// that's where $output will go when we fwrite() it.
if (!$handle = fopen($file, 'a')) {
echo "Cannot open file ($file)";
exit;
}
// Write $output to our opened file.
if (fwrite($handle, $output) === FALSE) {
echo "Cannot write to file ($file)";
exit;
}
echo "Success, content ($output) wrote to file ($file)";
fclose($handle);
} else {
echo "The file $file is not writable";
}
?>
我想提出一个解决“什么时候不使用它”的答案,因为它还没有被覆盖,可以想象它被盲目地使用,直到后来才有人注意到有问题。这与现有的答案有些矛盾。
如果在HTML中输出到网页,特别是<textarea>, <pre>或<code>中的文本,您可能总是想使用\n而不是PHP_EOL。
原因是,虽然代码可能在一台服务器上工作得很好-这恰好是一个类unix平台-如果部署在Windows主机(如Windows Azure平台)上,那么它可能会改变页面在某些浏览器(特别是Internet Explorer -某些版本将看到\n和\r)中的显示方式。
我不确定自IE6以来这是否仍然是一个问题,所以它可能是相当有争议的,但似乎值得一提,如果它有助于人们思考上下文。在其他情况下(比如严格的XHTML),在某些平台上突然输出\r可能会导致输出出现问题,我相信还有其他类似的边缘情况。
有人已经指出,当返回HTTP报头时,你不会想要使用它——因为它们在任何平台上都应该始终遵循RFC。
我不会将它用于CSV文件上的分隔符之类的东西(就像有人建议的那样)。服务器运行的平台不应该决定生成或使用的文件中的行结束符。
DOS/Windows标准的换行符是CRLF (= \r\n)而不是LFCR (\n\r)。如果我们选择后者,很可能会产生一些意想不到的结果(好吧,实际上是意料之中的!): D)的行为。
现在,几乎所有(编写良好的)程序都接受UNIX标准LF (\n)作为换行代码,甚至邮件发送守护进程(RFC将CRLF设置为标题和消息正文的换行)。
当你想要一个新的行,并且你想跨平台的时候,你可以使用PHP_EOL。
这可能发生在将文件写入文件系统时(日志、导出、其他)。
如果您希望生成的HTML具有可读性,则可以使用它。所以可以在<br />后面加上PHP_EOL。
如果你在cron上运行php脚本,你需要输出一些东西,并将其格式化后显示在屏幕上,你就可以使用它。
如果你要发送一封需要一些格式的电子邮件,你可以使用它。