在 PHP 写入文本文件时,换行符无法正常工作。

31

我有以下测试脚本:

<?php

$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Floppy Jalopy\n";
fwrite($fh, $stringData);
$stringData = "Pointy Pinto\n";
fwrite($fh, $stringData);
fclose($fh);

?>

当使用记事本打开时,运行后,数据以单行形式返回,没有换行,如下所示:

Floppy Jalopy(疯狂盒子)Pointy Pinto(疯狂盒子)

我无法找到适合“疯狂盒子”的字符,但它是一个非常疯狂的盒子。这是为什么呢?

4个回答

69

最好使用PHP_EOL。这是跨平台的,因此它会自动选择适合当前运行PHP的平台的正确换行符。

$stringData = "Floppy Jalopy" . PHP_EOL;

PHP 常量


7
如果脚本生成的文件需要在同一平台上使用,那么最好使用PHP_EOL。但根据我的经验,大多数情况下,你创建的文件是用于下载、发送电子邮件或以后解析,这些情况下你需要具有特定换行符的文件,而不是脚本运行平台上的默认换行符。 - AndreKR
这似乎是最好的答案。 - Herr_Hansen

36
如果你想在Windows记事本中打开该文件,必须使用Windows换行符:\r\n

2
如果你在 Wordpad 中打开它,它会处理 \n\r\n,很多其他编辑器也是如此,但记事本很挑剔。 - Spudley

1
你的代码运行良好。
如果你在Windows上工作,请使用Notepad2Notepad++。内置的记事本无法处理Unix风格的换行符。

0

PHP_EOL; 可以在任何情况下使用


1
这似乎在重复这个现有的答案 - Pang
这在我的情况下不起作用。被接受的答案有效。+1票 - Infoconic Technologies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接