2014-09-03 114 views
1

我想用PHP编写一个文本文件。每个$result字符串必须在txt文件的新行中,但是当我输入时,所有$result字符串都在同一行上。问题是什么 ?如何在使用PHP的文本文件中写入新行?

这里是我的代码:

$result=date("Y.m.d").'!'.$_POST['name'].'!'.$_POST['price'].'!'.$selectedGroup."\n"; 
file_put_contents('data.txt', $result,FILE_APPEND) 

回答

3

使用PHP_EOL预定义的常量:

file_put_contents('data.txt', $result . PHP_EOL, FILE_APPEND); 

manual

PHP_EOL(串)

此平台的正确'行尾'符号。

可用,因为PHP 4.3.10和5.0.2 PHP

要测试你的输入,你可以尝试到输出文件的数据与file()(应适当确定线分离):

print_r(file('data.txt')); 

如果它包含多个元素,那么你的行是分开的。

+0

看来他已经在使用“\ n” – 2014-09-03 09:31:13

+0

他的问题,我相信,在于他对结果进行验证,而不是实际的一代吧。 – Slavic 2014-09-03 09:34:53

+0

它正在工作,但是它在文件的第一行创建了一个空行。如何避免这种情况? – Montoolivo 2014-09-03 09:40:01

1

的问题是,你的编辑器(Windows记事本?)不把\n作为新行。

有没有一种新的线

windows: \r\n 

linux/unix: \n 

mac: \r 
+0

我的编辑器是Notepad ++。 – Montoolivo 2014-09-03 09:34:47

+0

@Montoolivo然后应该有选项来设置换行符类型。 – xdazz 2014-09-03 09:38:48

1

你是如何验证结果?你在编辑器中打开文件吗?如果您是在Windows上执行此操作,请注意某些编辑器会将“\ r \ n”显示为新行,而将“\ n”视为空格或仅仅忽略它。

+0

如果我把“\ r \ n”而不是“\ n”表示它正在工作。 – Montoolivo 2014-09-03 09:44:13

+0

您需要知道生成文件的目标受众是谁。您可能需要使用Unix版本“\ n”,而不是Windows版本的换行符。 – Slavic 2014-09-03 09:49:50