用PHP写一个新行到文件(换行)

时间:2010-06-18 00:00:04

标签: php newline fopen 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);

出于某种原因,它将\n写为字符串,因此该文件如下所示:

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

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

40119
40122
40120
42155
36925
45881
42145
45880

感谢。

4 个答案:

答案 0 :(得分:247)

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

请参阅manual

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

答案 1 :(得分:59)

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

答案 2 :(得分:55)

自PHP 4.3.10和PHP 5.0.2起,PHP_EOL是PHP中的预定义常量。请参阅manual发布信息:

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

IE。

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

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

some data
some data

答案 3 :(得分:21)

您还可以使用file_put_contents()

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