在PHP中输出带有换行符的文本文件。

20

我正在尝试使用下面的代码打开文本文件并输出其内容。该文本文件包含换行符,但是当我echo(输出)文件时它没有保留格式。我该如何解决这个问题?

谢谢。

<html>

<head>

</head>

<body>

        $fh = fopen("filename.txt", 'r');

        $pageText = fread($fh, 25000);

        echo $pageText;


</body>

</html>

1
不使用 fpassthru() 的原因是什么? - Ignacio Vazquez-Abrams
9个回答

37

要将纯文本的换行符转换为HTML换行符,请尝试以下方法:

    $fh = fopen("filename.txt", 'r');

    $pageText = fread($fh, 25000);

    echo nl2br($pageText);

请注意文本周围的 nl2br 函数。


31

一行代码:

 echo nl2br( file_get_contents('file.txt') );

11

如果您只想在HTML代码中显示文件的输出,并以与文本文件相同的格式进行格式化,则可以使用一对pre标签将echo语句包装起来:

echo "<pre>" . $pageText . "</pre>;

根据您想要做什么,其他答案中的一些看起来很有前途。


3

对于像这样简单的读取,我会这样做:

$fileContent = file_get_contents("filename.txt");

echo str_replace("\n","&lt;br&gt;",$fileContent);

这将处理回车并输出文本。除非我要写入文件,否则我不使用fopen和相关函数。
希望这有所帮助。

2
在回声之前,请确保包含以下内容。
header('Content-Type: text/plain');

1
输出是HTML。将“Content-Type”设置为“text/plain”是不正确的。 - Jordan Ryan Moore
啊,有了这个限制,只需在回显内容周围包装<pre>即可。 - brianary

0

在Apache2和PHP 5.3.3与MacOSX 10.6.6和Camino中读取一个.txt文件时,尝试使换行符起作用,直到我先打印文件大小,echo nl2br( $text); 才能正常工作。 顺便说一下,.txt文件是否具有Linux/MacOSX LF或Windows CRLF换行符,或者文本编码是UTF-8还是Windows Latin1似乎并不重要,Camino都可以正确识别。

<?php
$filename     = "/Users/Shared/Copies/refrain.txt";
$file_ptr     = fopen ( $filename, "r" );
$file_size    = filesize ( $filename );
$text         = fread ( $file_ptr, $file_size );
fclose ( $file_ptr );
echo ( "File size : $file_size bytes<br>&nbsp;<br>" );
echo nl2br ( $text );
?>

0
你是输出到 HTML 还是纯文本?如果是 HTML,请在每行末尾添加 <br>。例如:
while (!feof($handle)) {
  $buffer = fgets($handle, 4096); // Read a line.
  echo "$buffer<br/>";
} 

-1
假设您的Web服务器上托管有一个index.php文件。您想将一些多行文本文件内容插入其中。操作步骤如下:
<body>
        <div>Some multi-line message below:</div> 
        <div><?= nl2br(file_get_contents('message.txt.asc')); ?></div>
</body>

这个<?= ... ?>部分只是一个简写,它告诉Web服务器,它需要被视为PHP echo参数。


虽然 <?= 是有效的语法,应该不会从 PHP 中移除作为可用的速记方式,但它会导致训练你忽略 <?php 而只使用 <?(在 7 中已经被弃用)。对于新手开发人员来说最好不要为了在 echo 中节省 8 个字符而养成忽略 <?php 的习惯。作为一个编写 PHP 十年以上的开发者,我花了很长时间才打破自己使用特定速记符号的习惯,如果我们可以避免使用已知的废弃可能性,最好不要开始学习它。 <?php echo nl2br(... ...); ?> - Kender
1
我理解你的痛苦。但对于我们这些只偶尔在HTML中编写PHP代码片段的人来说,这个快捷方式实际上非常有用。 - Neurotransmitter

-1

你需要将你的PHP代码包裹在<?php <YOU CODE HERE >?>中,并将其保存为.php.php5(取决于你的Apache设置)。


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