为什么PHP\u EOL在每行末尾写入\r\n

为什么PHP\u EOL在每行末尾写入\r\n,php,xampp,fwrite,eol,osx-yosemite,Php,Xampp,Fwrite,Eol,Osx Yosemite,我一直在努力处理PHP新行字符。我同意以下事实,即PHP\u EOL提供了一个平台无关的新线(\r\r\n\n基于操作系统),我们可以利用这一点为我们带来好处 我正在使用XAMPP在MacOS(Yosemite)上读写一个简单的PHP文件 下面是我要写入文件的代码 $handle = fopen("test.txt", "a+"); $data = "Hello World." . PHP_EOL; fwrite($handle, $data); 文件中的输出如下所示 Hello Worl

我一直在努力处理PHP新行字符。我同意以下事实,即PHP\u EOL提供了一个平台无关的新线(\r\r\n\n基于操作系统),我们可以利用这一点为我们带来好处

我正在使用XAMPP在MacOS(Yosemite)上读写一个简单的PHP文件

下面是我要写入文件的代码

$handle = fopen("test.txt", "a+");

$data = "Hello World." . PHP_EOL;

fwrite($handle, $data);
文件中的输出如下所示

Hello World.\r\n
注意:我已经用fwrite()和file_get_contents()对其进行了测试。没有区别

我的问题是:当使用PHP\u EOL通过write写入文件时,为什么它会在行的末尾写入

通过调用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()!
$line=str\u replace(“\r\n”,“
,$line);//不行! $line=preg_replace(“~\r?\n~”,“
,$line);//与nl2blr()的工作原理相同! $line=str_replace(PHP_EOL,“
,$line);//与nl2br()的工作原理相同!
上面的选项将插入HTML换行符,但不会从实际文本中删除此“\r\n”

我通过手动输入几行进行了测试(显然没有),此读取方法在没有任何错误的情况下\r\n可以完美地工作。因此,我断定{PHP_EOL+文件编写方法}可能是罪魁祸首

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

任何帮助都将不胜感激


提前感谢。

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


$line=str_replace('\r\n',“
,$line);//注意“\r\n”不是“\r\n”

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


$line=str_replace('\r\n',“
,$line);//注意“\r\n”不是“\r\n”

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


$line=str_replace('\r\n',“
,$line);//注意“\r\n”不是“\r\n”

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


$line=str_replace('\r\n',“
,$line);//注意“\r\n”不是“\r\n”

为什么有人否决了这个问题?为什么有人否决了这个问题?为什么有人否决了这个问题?为什么有人否决了这个问题?谢谢。它起作用了。不过,我有一个问题。专家的建议是不要替换任何东西,而只是使用nl2br()本身。但是,nl2br()仍会保留\r\n!有什么建议吗?@itsraghz我想可能在编码或解码的某个地方,您的下线字符被记录为标准文本,而不是实际的下线字符(chr 10和13)。我不知道在哪里发生的,如果没有看到你所有的代码。最安全的方法可能是这样,用实际的EOL字符替换
\r\n
,然后像其他人建议的那样使用内置的
nl2br()
$line=nl2br(str_replace('\r\n',PHP_EOL,$line))谢谢。嗯,这只是一个演示/练习,我从一个文件中读取,并粘贴了它的关键。让我试试你的建议,然后再回来寻求进一步的帮助!谢谢它起作用了。不过,我有一个问题。专家的建议是不要替换任何东西,而只是使用nl2br()本身。但是,nl2br()仍会保留\r\n!有什么建议吗?@itsraghz我想可能在编码或解码的某个地方,您的下线字符被记录为标准文本,而不是实际的下线字符(chr 10和13)。我不知道在哪里发生的,如果没有看到你所有的代码。最安全的方法可能是这样,用实际的EOL字符替换
\r\n
,然后像其他人建议的那样使用内置的
nl2br()
$line=nl2br(str_replace('\r\n',PHP_EOL,$line))谢谢。嗯,这只是一个演示/练习,我从一个文件中读取,并粘贴了它的关键。让我试试你的建议,然后再回来寻求进一步的帮助!谢谢它起作用了。不过,我有一个问题。专家的建议是不要替换任何东西,而只是使用nl2br()本身。但是,nl2br()仍会保留\r\n!有什么建议吗?@itsraghz我想可能在编码或解码的某个地方,您的下线字符被记录为标准文本,而不是实际的下线字符(chr 10和13)。我不知道在哪里发生的,如果没有看到你所有的代码。最安全的方法可能是这样,用实际的EOL字符替换
\r\n
,然后像其他人建议的那样使用内置的
nl2br()
$line=nl2br(str_replace('\r\n',PHP_EOL,$line))谢谢。嗯,这只是一个演示/练习,我从一个文件中读取,并粘贴了它的关键。让我试试你的建议,然后再回来寻求进一步的帮助!谢谢它起作用了。不过,我有一个问题。专家的建议是不要替换任何东西,而只是使用nl2br()本身。但是,nl2br()仍会保留\r\n!有什么建议吗?@itsraghz我想可能在编码或解码的某个地方,您的下线字符被记录为标准文本,而不是实际的下线字符(chr 10和13)。我不知道在哪里发生的,如果没有看到你所有的代码。最安全的方法可能是这样,用实际的EOL字符替换
\r\n
,然后像其他人建议的那样使用内置的
nl2br()
$line=nl2br(str_replace('\r\n',PHP_EOL,$line))谢谢。嗯,这只是一个演示/练习,我从一个文件中读取,并粘贴了它的关键。让我试试你的建议,然后再回来寻求进一步的帮助!