在 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 中向文件写入新行(换行)的主要内容,如果未能解决你的问题,请参考以下文章