123

我的代码:

$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'ing 它告诉我使用\r\n,但\r它是一个回车,这似乎不是我想要做的。我只希望文件看起来像这样:

40119
40122
40120
42155
36925
45881
42145
45880

谢谢。

4

4 回答 4

305

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

请参阅手册

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

于 2010-06-18T00:00:58.237 回答
72

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

于 2011-09-16T19:58:49.667 回答
69

PHP_EOL 是自 PHP 4.3.10 和 PHP 5.0.2 以来 PHP 中的预定义常量。请参阅手册发布:

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

IE。

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

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

some data
some data
于 2013-02-17T21:29:02.633 回答
38

您还可以使用file_put_contents()

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);
于 2010-06-18T02:02:56.817 回答