什么时候使用php_ol是一个好主意?
我有时会在PHP代码示例中看到这种情况。这是否处理DOS/Mac/Unix终端线问题?
什么时候使用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制造软件)时工作。
其他回答
PHP_EOL(字符串) 此平台的正确“行结束”符号。 自PHP 4.3.10和PHP 5.0.2起可用
当读写服务器文件系统上的文本文件时,可以使用这个常量。
在大多数情况下,行结束并不重要,因为大多数软件都能够处理文本文件,而不管它们的来源。你应该与你的代码保持一致。
如果行结束符很重要,则显式地指定行结束符,而不是使用常量。例如:
HTTP报头必须用\r\n分隔 CSV文件应该使用\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";
}
?>
我有一个站点,其中一个日志脚本在用户的操作之后向文本文件写入新一行文本,用户可以使用任何操作系统。
在这种情况下,使用PHP_EOL似乎不是最优的。如果用户是在Mac OS上,并写入文本文件,它将放置\n。当在windows计算机上打开文本文件时,它不会显示换行符。因此,我使用“\r\n”来代替在任何操作系统上打开文件时的工作。
我刚刚在输出到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制造软件)时工作。
当你想要一个新的行,并且你想跨平台的时候,你可以使用PHP_EOL。
这可能发生在将文件写入文件系统时(日志、导出、其他)。
如果您希望生成的HTML具有可读性,则可以使用它。所以可以在<br />后面加上PHP_EOL。
如果你在cron上运行php脚本,你需要输出一些东西,并将其格式化后显示在屏幕上,你就可以使用它。
如果你要发送一封需要一些格式的电子邮件,你可以使用它。