2010-06-18 74 views
80
到文件

我的代码:写一个新的生产线在PHP

$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 

谢谢。

回答

219

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

查看manual

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

+0

非常感谢,应该想到这一点我自己:)我只能接受你的答案在第9分钟,但是当我可以,我会。 – 2010-06-18 00:06:01

+0

我已将“\ r \ n”更改为“\ n”,以便我的行结束并可以正常工作。谢谢。 – csonuryilmaz 2015-04-25 05:10:29

18

您还可以使用file_put_contents()

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

使用PHP_EOL其输出\r\n\n根据不同的操作系统。

+4

不要惹上麻烦,除非你想在特定的操作系统中打开这个文件,否则总是使用'\ n' - 如果是这样,请使用该操作系统的换行符组合,而不是运行PHP的操作系统('PHP_EOL ')。 – 2012-10-09 13:35:30

44

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

使用此功能可为您节省跨平台开发的额外编码。

IE。

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

如果你通过这个循环两次,你会看到在“somefile”:

some data 
some data