【发布时间】:2014-12-27 03:28:52
【问题描述】:
我一直在努力处理 PHP 换行符。我同意以下事实,即 PHP_EOL 提供了一个平台中立的换行符(\r、\r\n、\n 基于操作系统),我们可以利用它为我们带来好处。
我正在使用 XAMPP 在我的 Mac OS (Yosemite) 中进行简单的 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 输出有这个 \r\n 字符!!!
我一直在玩很多不同的选择,如下所示
$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'!
我通过手动输入几行进行测试(显然没有\r\n),这种读取方法在没有任何\r\n 的情况下完美运行。因此,我得出结论,{PHP_EOL + 文件写入方法}可能是罪魁祸首!
我真的很困惑我错过了什么?
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
为什么有人对这个问题投了反对票?
标签: php xampp fwrite eol osx-yosemite