我的代码:
$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
感谢。
答案 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);