在PHP中编写新行到文件(换行)


109

我的代码:

$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

谢谢。

Answers:


278

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

请参阅手册

有关如何写行尾的问题,请参见此处的注释。基本上,不同的操作系统对于行尾有不同的约定。Windows使用“ \ r \ n”,基于Unix的操作系统使用“ \ n”。您应该遵守一个约定(我选择了“ \ n”),然后以二进制模式打开文件(fopen应该获取“ wb”,而不是“ w”)。


我已将“ \ r \ n”更改为“ \ n”,以结束它的行并使其正常工作。谢谢。
csonuryilmaz 2015年

现在我的代码同时使用"',这让我感到困扰
PizzaGuy先生

实际上,您实际上可以注意到\ n在使用“”时突出显示,而在使用''时则未突出显示。(
也就是说

68

使用PHP_EOL哪个输出\r\n\n取决于OS。


4
别麻烦,\n除非您要在特定的操作系统中打开文件,否则请始终使用-如果是这样,请使用该操作系统的换行符组合,而不要使用在(PHP_EOL)上运行PHP的操作系统。
Alix Axel 2012年

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);

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

some data
some data

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.