在 PHP 中向文件写入新行(换行)

Posted

技术标签:

【中文标题】在 PHP 中向文件写入新行(换行)【英文标题】:Writing a new line to file in PHP (line feed) 【发布时间】:2011-03-05 05:32:35 【问题描述】:

我的代码:

$i = 0;
$file = fopen('ids.txt', 'w');
foreach ($gemList as $gem)

    fwrite($file, $gem->getAttribute('id') . '\n');
    $gemIDs[$i] = $gem->getAttribute('id');
    $i++;

fclose($file);

由于某种原因,它把\n写成一个字符串,所以文件看起来像这样:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880

来自谷歌的它告诉我使用\r\n,但\r 是一个回车,这似乎不是我想要做的。我只希望文件看起来像这样:

40119
40122
40120
42155
36925
45881
42145
45880

谢谢。

【问题讨论】:

【参考方案1】:

'\n' 替换为"\n"。使用'时无法识别转义序列。

请参阅manual。

关于如何写行尾的问题,见注释here。基本上,不同的操作系统对行尾有不同的约定。 Windows 使用“\r\n”,基于 unix 的操作系统使用“\n”。你应该遵守一个约定(我选择了“\n”)并以二进制模式打开文件(fopen 应该得到“wb”,而不是“w”)。

【讨论】:

我已将“\r\n”更改为“\n”,因为我的行结束符有效。谢谢。 现在我的代码同时使用了"',这让我很困扰 事实上,您实际上可以注意到 \n 在使用 "" 时会突出显示,但在使用 ' ' 时不会突出显示。 (也就是说,如果你的编辑器使用语法高亮,我的是 Sublime Text 3)【参考方案2】:

使用php_EOL 输出\r\n\n,具体取决于操作系统。

【讨论】:

别惹麻烦,除非您想在特定操作系统中打开文件,否则请始终使用\n - 如果是这样,请使用该操作系统的换行符组合,而不是您正在使用的操作系统在 (PHP_EOL) 上运行 PHP。【参考方案3】:

PHP_EOL 是 PHP 4.3.10 和 PHP 5.0.2 以来 PHP 中的预定义常量。见manual发帖:

使用它可以为您节省跨平台开发的额外编码。

IE。

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);

如果你循环了两次,你会在 'somefile' 中看到:

some data
some data

【讨论】:

【参考方案4】:

你也可以使用file_put_contents():

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);

【讨论】:

这是最好的答案。更具动态性,并自行处理 fopen()、fwrite()、fclose()。 这对于少量写入来说是好的,但是当您想要进行大量写入(即在循环中)时,出于性能原因,您可以考虑使用 fopen/fwrite/fclose。 grobmeier.solutions/… 文件在 ramdisk 上时性能可能会更好。

以上是关于在 PHP 中向文件写入新行(换行)的主要内容,如果未能解决你的问题,请参考以下文章

写入文本时删除换行符

php: 怎么让写入的字符串自动换行(在文本里面)?用fwrite()写入

在 PHP 中写入文本文件时换行不起作用

PHP中,fwrite写入文件的时候,怎么换行?

Android 怎样在应用程序中向文件里写入数据?

关于Java中向文件写入数据的问题