PHP换行符无法正常工作

3

你好,我正在尝试编写一些代码,首先读取文件中现有的内容,然后在新行上添加新的代码行,但是我使用的代码只会将新文本添加到已经存在的行上,而不是新行上...

这是我使用的代码:

<?php

$id = $_GET['id'];

$userfile = "user1.txt";
$fo = fopen($userfile, 'r') or die("can't open favourites file");
$currentdata = fread($fo, filesize($userfile));
fclose($fo);
$fw = fopen($userfile, 'w') or die("can't open favourites file");
$currentprocessed = "$currentdata\n";
fwrite($fw, $currentprocessed);
fwrite($fw, $id);
fclose($fw);
?>

我尝试了各种不同的想法,但都没有奏效,希望能得到帮助。

3个回答

9

操作系统的换行符

Unix / Linux
\n

DOS / Windows
\r\n

无效
\r\n\r


PHP_EOL 常量的值取决于 PHP 运行的平台。
不能检测当前文件或任何神奇的东西中的行尾标记。


Mac以前不是用\r吗?还是其他什么的?我记得在某个地方使用了\r - Carson Myers
在OS 9时代使用\r,但自从Mac OSX以来就改为了\n。有关更多信息,请参见http://en.wikipedia.org/wiki/Newline。 - Bob Fanger

4

不要追加\n,而是将常量PHP_EOL连接起来,它始终是当前平台的正确换行符。

这也可能是您使用打开文本文件的程序的问题。例如,在Windows上,记事本无法理解Unix样式的换行符。


读完这个问题,我也是这么想的 - Windows 上的记事本不会显示 \n 换行符,它期望的是 \n\r。你可以尝试使用 WordPad(很荒谬,我知道),或者下载一个 TextPad 并将其用于所有操作(http://www.textpad.com/)。 - hndcrftd

0

我也遇到了同样的问题。你使用什么应用程序来读取文件?我发现由于某种原因,记事本(我的默认 .txt 文件打开方式)无法识别“\n\r”转义字符。我在 Notepad++、Atom(我喜欢的文本编辑器)或浏览器中打开我正在编写的 .txt 文件,它们都可以正常显示换行符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接