【问题标题】:Writing a new line to file in PHP (line feed)在 PHP 中向文件写入新行(换行)
【发布时间】: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

谢谢。

【问题讨论】:

    标签: php newline fopen fwrite linefeed


    【解决方案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 上时性能可能会更好。
      猜你喜欢
      • 2011-09-02
      • 1970-01-01
      • 2020-07-15
      • 2020-09-08
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多