在PHP中用文件写一个新行

VIV*_*NWO 101 php fopen newline fwrite linefeed

我的代码:

$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);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它是\n作为字符串写的,所以文件看起来像这样:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880
Run Code Online (Sandbox Code Playgroud)

从Google开始它告诉我使用\r\n,但是\r回车似乎不是我想做的.我只是希望文件看起来像这样:

40119
40122
40120
42155
36925
45881
42145
45880
Run Code Online (Sandbox Code Playgroud)

谢谢.

Art*_*cto 259

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

请参阅手册.

有关如何编写行结尾的问题,请参阅此处的注释.基本上,不同的操作系统对行结尾有不同的约定.Windows使用"\ r \n",基于unix的操作系统使用"\n".你应该坚持一个约定(我选择"\n")并以二进制模式打开你的文件(fopen应该得到"wb",而不是"w").


小智 60

使用PHP_EOL哪个输出\r\n\n取决于操作系统.

  • 不要遇到麻烦,除非你想在特定的操作系统中打开文件,否则总是使用`\n` - 如果是这样,请使用该操作系统的换行组合,而不是运行PHP的操作系统(`PHP_EOL` ). (4认同)

use*_*798 60

自PHP 4.3.10和PHP 5.0.2起,PHP_EOL是PHP中的预定义常量.查看手册发布:

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

IE浏览器.

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);
Run Code Online (Sandbox Code Playgroud)

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

some data
some data
Run Code Online (Sandbox Code Playgroud)

  • 完成文件后您应该关闭:https://www.php.net/manual/en/function.fclose.php (2认同)

Ali*_*xel 23

您还可以使用file_put_contents():

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);
Run Code Online (Sandbox Code Playgroud)