用PHP编写新行

时间:2018-07-27 23:05:19

标签: php file

我已经阅读了线程Writing a new line to file in PHP,并将其确切的代码粘贴到了自己的netbeans IDE中,但是没有用。粘贴的代码(有一些小的更改)为:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
$i = 0;
$file = fopen('ids.txt', 'w');
$gemList=array(1,2,3,4,5);
foreach ($gemList as $gem)
{
    fwrite($file, $gem."\n");
    $i++;
}
fclose($file);        
?>
    </body>
</html>

我还尝试使用其他代码在文件的新行中写入。我的代码是这样的:

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        $fh = fopen("testfile.txt", 'w') or die("Failed to create file");
$text = <<<_END
Line 1
Line 2
Line 3
_END;
fwrite($fh, $text) or die("Could not write to file");
fclose($fh);
echo "File 'testfile.txt' written successfully";
?>
    </body>
</html>

但是文本文件中的结果是

  

12345

我期望的是

  

1

     

2

     

3

     

4

     

5

非常感谢您的帮助。另外,我的Netbeans版本是8.2,运行的操作系统是Windows 10。

3 个答案:

答案 0 :(得分:4)

使用您当前的代码,检查页面来源,它会为您提供正确的结果。

但是请记住,您正在html页面上运行它,因此,如果要换行,请使用<br>标签。

foreach ($gemList as $gem)
{
    fwrite($file, $gem."<br>");
    $i++;
}
fclose($file);  

HTML不会考虑换行\n,除非您专门设置CSS属性white-space:pre;

答案 1 :(得分:0)

如果您正在网页上显示,Ibu的答案是正确的。

对于您的fwrite()呼叫,请确保您使用的文本查看器将\n理解为EOL字符。换句话说,如果您使用的是Windows,并且只能在Windows上使用生成的文件,则\n\r(换行符和回车符)就是您要使用的EOL字符< / p>

或者,保持原样,并使用支持“ Unix样式行结尾”的文本编辑器-Notepad ++可以...

答案 2 :(得分:0)

如果您正在浏览器中查看文件的内容(例如,在PHP中回显),则需要使用nl2br() PHP函数将换行符转换为html的<br/>

<div>
<?= nl2br(file_get_contents("testfile.txt")); ?>
</div>

或者将文件内容包含在CSS空格属性设置为“ pre”的情况下:

<div style="white-space: pre">
<?= file_get_contents("testfile.txt"); ?>
</div>