Вывод текстового файла с переносами строк в PHP - PullRequest
11 голосов
/ 13 января 2010

Я пытаюсь открыть текстовый файл и вывести его содержимое с кодом ниже. Текстовый файл содержит разрывы строк, но когда я повторяю файл, он неформатирован. Как мне это исправить?

Спасибо.

<html>

<head>

</head>

<body>

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

        $pageText = fread($fh, 25000);

        echo $pageText;


</body>

</html>

Ответы [ 9 ]

30 голосов
/ 13 января 2010

Чтобы преобразовать разрывы строк обычного текста в разрывы строк HTML, попробуйте следующее:

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

    $pageText = fread($fh, 25000);

    echo nl2br($pageText);

Обратите внимание, что функция nl2br переносит текст.

22 голосов
/ 13 января 2010

Одна строка кода:

 echo nl2br( file_get_contents('file.txt') );
5 голосов
/ 13 января 2010

Если вы просто хотите показать вывод файла в HTML-коде, отформатированном так же, как в текстовом файле, вы можете заключить в свой оператор echo пару предварительных тегов:

<code>echo "<pre>";
echo $pageText;
echo "
";

Некоторые другие ответы выглядят многообещающе в зависимости от того, что вы пытаетесь сделать.

2 голосов
/ 13 января 2010

Для таких простых операций чтения я бы сделал что-то вроде этого:

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

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

Это позаботится о возврате каретки и выводит текст. Если я не пишу в файл, я не использую fopen и связанные с ним функции.

Надеюсь, это поможет.

2 голосов
/ 13 января 2010

Перед эхо обязательно включите

header('Content-Type: text/plain');
0 голосов
/ 09 июля 2017

Скажем, у вас есть файл index.php, размещенный на веб-сервере. Вы хотите вставить в него несколько многострочных текстовых файлов. Вот как ты это делаешь:

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

Эта часть <?= ... ?> является всего лишь сокращением, которое указывает веб-серверу, что его нужно рассматривать как аргумент PHP echo.

0 голосов
/ 06 мая 2015

Попытка получить разрывы строк для работы при чтении файла .txt на Apache2 и PHP 5.3.3 с MacOSX 10.6.6 и Camino, 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 голосов
/ 13 января 2010

Вам нужно обернуть ваш PHP-код в <?php <YOU CODE HERE >?> и сохранить его как .php или .php5 (зависит от настройки вашего Apache).

0 голосов
/ 13 января 2010

Вы выводите в HTML или обычный текст? Если HTML, попробуйте добавить <br> в конце каждой строки. например,

while (!feof($handle)) {
  $buffer = fgets($handle, 4096); // Read a line.
  echo "$buffer<br/>";
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...