什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
当前回答
我正在使用WebCalendar,发现Mac iCal在导入生成的ics文件时呕吐,因为行尾在xcal.php中硬编码为“\r\n”。我进去,用PHP_EOL替换了所有的事件,现在iCal是快乐的! 我还在Vista和Outlook上进行了测试,即使行尾字符是“\n”,也能导入文件。
其他回答
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太长了,真的不值得使用。
我更喜欢用\n\r。而且我在windows系统上,\n在我的经验中工作得很好。
由于PHP_EOL不能与正则表达式一起工作,而正则表达式是处理文本的最有用的方法,所以我真的从未使用过它,也不需要使用它。
我有一个站点,其中一个日志脚本在用户的操作之后向文本文件写入新一行文本,用户可以使用任何操作系统。
在这种情况下,使用PHP_EOL似乎不是最优的。如果用户是在Mac OS上,并写入文本文件,它将放置\n。当在windows计算机上打开文本文件时,它不会显示换行符。因此,我使用“\r\n”来代替在任何操作系统上打开文件时的工作。
我发现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";
}
?>
有一个明显的地方它可能有用:当您编写主要使用单引号字符串的代码时。有争议的是:
echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;
echo 'this other $one'."\n";
它的艺术在于始终如一。混合和匹配"和"的问题是,当你得到很长的字符串时,你真的不想去寻找你使用的引用类型。
就像生活中的所有事情一样,这取决于上下文。