18

我正在尝试打开一个文本文件并使用下面的代码输出其内容。文本文件包含换行符,但是当我回显文件时,它没有格式化。我该如何解决?

谢谢。

<html>

<head>

</head>

<body>

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

        $pageText = fread($fh, 25000);

        echo $pageText;


</body>

</html>
4

9 回答 9

36

要将纯文本换行符转换为 html 换行符,请尝试以下操作:

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

    $pageText = fread($fh, 25000);

    echo nl2br($pageText);

注意包裹文本的 nl2br 函数。

于 2010-01-13T20:01:01.660 回答
28

一行代码:

 echo nl2br( file_get_contents('file.txt') );
于 2010-01-13T20:11:40.470 回答
11

如果您只想在 HTML 代码中显示文件的输出,其格式与文本文件中的格式相同,您可以使用一对 pre 标记包装 echo 语句:

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

根据您要执行的操作,其他一些答案看起来很有希望。

于 2010-01-13T20:20:43.403 回答
2

在回声之前,一定要包括

header('Content-Type: text/plain');
于 2010-01-13T19:53:47.870 回答
2

对于像这样的简单阅读,我会做这样的事情:

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

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

这将处理回车并输出文本。除非我正在写入文件,否则我不使用 fopen 和相关函数。

希望这可以帮助。

于 2010-01-13T20:10:28.710 回答
0

您是输出到 HTML 还是纯文本?如果 HTML 尝试<br>在每一行的末尾添加一个。例如

while (!feof($handle)) {
  $buffer = fgets($handle, 4096); // Read a line.
  echo "$buffer<br/>";
} 
于 2010-01-13T19:56:36.443 回答
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 );
?>
于 2015-05-06T08:42:51.287 回答
-1

您需要将 PHP 代码包装到<?php <YOU CODE HERE >?>中,并将其另存为.phpor .php5(取决于您的 apache 设置)。

于 2010-01-13T20:01:55.190 回答
-1

假设您有一个index.php由 Web 服务器托管的文件。您想在其中插入一些多行文本文件内容。这就是你的做法:

<body>
        <div>Some multi-line message below:</div> 
        <div><?= nl2br(file_get_contents('message.txt.asc')); ?></div>
</body>

<?= ... ?>部分只是一个简写,它指示 Web 服务器需要将其视为 PHPecho参数。

于 2017-07-09T11:00:21.017 回答