PHP_EOL为什么在每行的末尾 写入


why does PHP_EOL write at the end of each line

我一直在与PHP换行符作斗争。我同意以下事实,即PHP_EOL提供了一个平台中立的换行符(''r''n,''r''n,基于操作系统(,我们可以利用它为我们的利益服务。

我正在我的Mac操作系统(Yosemite(中使用XAMPP进行简单的PHP文件读写。

以下是我要写入文件的代码。

$handle = fopen("test.txt", "a+");
$data = "Hello World." . PHP_EOL;
fwrite($handle, $data);

文件中的输出如下所示。

Hello World.'r'n

注意:我已经用fwrite((和file_get_contents((进行了测试。没有区别。

我的问题是:当通过PHP_EOL写入文件时,它为什么在''r''n行的末尾写入

通过调用nl2br((函数插入换行符(HTML换行符(没有问题。但是,由于这个字符,我的HTML输出有这个字符!!!

我一直在玩很多不同的替代品,如下

$line = str_replace("'r'n","<br/>",$line); // Does NOT work!
$line = preg_replace('~'r?'n~','<br/>', $line); // Works as that of nl2blr()!
$line = str_replace(PHP_EOL, "<br/>",$line); // Works as that of nl2br()!

上面的选项插入一个HTML换行符,但没有从实际文本中删除此'''r''n'

我通过手动输入几行进行了测试(显然没有(,这种读取方法在没有任何错误的情况下运行良好。因此,我得出结论,{PHP_EOL+文件写入方法}可能是罪魁祸首!

我真的很困惑我错过了什么?

如有任何帮助,我们将不胜感激。

提前谢谢。

如果没有双引号,PHP不会处理特殊字符,应该按照您的期望进行替换。

$line = str_replace(''r'n',"<br/>",$line); // note ''r'n' not "'r'n"