отображать содержимое файла .txt с помощью php

StackOverflow https://stackoverflow.com/questions/928174

  •  06-09-2019
  •  | 
  •  

Вопрос

используя этот код

<?php
foreach (glob("*.txt") as $filename) {   
    $file = $filename;
    $contents = file($file); 
    $string = implode($contents); 
    echo $string;
    echo "<br></br>";
}
?>

я могу отобразить содержимое любого текстового файла в папке проблема в том, что все форматирование и так далее Из текстового файла пропущено

текстовый файл выглядит следующим образом

#nipponsei @ irc.rizon.net presents:

Title: Ah My Goddess Sorezore no Tsubasa Original Soundrack
Street Release Date: July 28, 2006

------------------------------------

Tracklist:

1. Shiawase no Iro On Air Ver
2. Peorth
3. Anata ni Sachiare
4. Trouble Chase
5. Morisato Ka no Nichijou
6. Flying Broom
7. Megami no Pride
8. Panic Station
9. Akuryou Harai
10. Hore Kusuri
11. Majin Urd
12. Hild
13. Eiichi Soudatsusen
14. Goddess Speed
15. Kaze no Deau Basho
16. Ichinan Satte, Mata...
17. Eyecatch B
18. Odayaka na Gogo
19. Heibon na Shiawase
20. Kedarui Habanera
21. Troubadour
22. Awate nai de
23. Ninja Master
24. Shinobi no Okite
25. Skuld no Hatsukoi
26. Kanashimi no Yokan
27. Kousaku Suru Ishi
28. Dai Makai Chou Kourin
29. Subete no Omoi wo Mune ni
30. Invisible Shield
31. Sparkling Battle
32. Sorezore no Tsubasa
33. Yume no Ato ni
34. Bokura no Kiseki On Air Ver

------------------------------------

Someone busted in, kicked me and asked why there was no release
of it. I forgot! I'm forgetting a lot...sorry ;_;

minglong

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

#nipponsei @ irc.rizon.net presents: Title: Ah My Goddess Sorezore no Tsubasa Original Soundrack Street Release Date: July 28, 2006 ------------------------------------ Tracklist: 1. Shiawase no Iro On Air Ver 2. Peorth 3. Anata ni Sachiare 4. Trouble Chase 5. Morisato Ka no Nichijou 6. Flying Broom 7. Megami no Pride 8. Panic Station 9. Akuryou Harai 10. Hore Kusuri 11. Majin Urd 12. Hild 13. Eiichi Soudatsusen 14. Goddess Speed 15. Kaze no Deau Basho 16. Ichinan Satte, Mata... 17. Eyecatch B 18. Odayaka na Gogo 19. Heibon na Shiawase 20. Kedarui Habanera 21. Troubadour 22. Awate nai de 23. Ninja Master 24. Shinobi no Okite 25. Skuld no Hatsukoi 26. Kanashimi no Yokan 27. Kousaku Suru Ishi 28. Dai Makai Chou Kourin 29. Subete no Omoi wo Mune ni 30. Invisible Shield 31. Sparkling Battle 32. Sorezore no Tsubasa 33. Yume no Ato ni 34. Bokura no Kiseki On Air Ver ------------------------------------ Someone busted in, kicked me and asked why there was no release of it. I forgot! I'm forgetting a lot...sorry ;_; minglong
Это было полезно?

Решение

Тот Самый implode по умолчанию используется пустая строка.Тебе следует позвонить implode что - то вроде этого:

  $string = implode("<br>", $contents);

Другие советы

Вы должны добавить элементы разрыва строки HTML к физическим разрывам строк.Вы могли бы использовать nl2br функция чтобы сделать это:

foreach (glob("*.txt") as $filename) {
    echo nl2br(file_get_contents($filename));
    echo "<br></br>";
}

Кроме того, я бы использовал file_get_contents функция скорее, чем сочетание file и implode.

Если это не является частью HTML-документа, вам необходимо изменить тип содержимого:

<?php
header("Content-Type: text/plain");
foreach (glob("*.txt") as $filename) { 
  readfile($filename);
}
?>

Если это часть HTML-документа, просто сделайте это:

<pre>
<?php
foreach (glob("*.txt") as $filename) { 
  readfile($filename);
}
?>
</pre>

В качестве альтернативы вы можете заменить новые строки разрывами:

<?php
foreach (glob("*.txt") as $filename) { 
  $str = file_get_contents($filename);
  echo preg_replace('!\r?\n!', '<br>', $str);
}
?>

вставляйте содержимое текстового файла между <pre></pre> Теги

Как упоминалось в нескольких других ответах, это сильно зависит от страницы, на которой вы отображаете выходные данные.

Вывод необработанного текста

Если вы не добавляете на страницу какой-либо другой контент или HTML-код.Просто измените заголовок HTTP Content-Type на "текстовый / обычный".;это:

header('Content-Type: text/plain');
echo file_get_contents('path/to/file');

Как всегда, необходимо отправить HTTP-заголовки до того, как любой контент отправляется в браузер.

(X) Вывод HTML

Замена \n"это с <br/> будет нет исправлены проблемы с усечением пробелов;то есть удаление смежных пробелов и/или табуляций.Самый простой способ обойти это, также как упоминалось ранее, - использовать <pre> тег для размещения содержимого файла.К сожалению, этого недостаточно, чтобы удовлетворить XHTML.Существует ряд символов, которые недопустимы в XML, если они не экранированы должным образом, в частности, включая: &, <, и >.

К счастью, это также легко исправить с помощью str_replace способ:

$raw = file_get_contents('path/to/file');
echo '<pre>';
echo str_replace($raw, array('>','<','&','%'), array('&gt;','&lt;','&amp;','&#37;'));
echo '</pre>';

У Питера Стуйфзанда была правильная идея, передать второй аргумент функции implode, поэтому я не буду касаться этого.На что я укажу, так это на то, что ваш собственный echo "<br></br>"; код не создает допустимый HTML-код.Если вы используете HTML и хотите сделать разрывы на 2 строки, сделайте echo "<br><br>"; и если вы используете XHTML и хотите сделать разрывы на 2 строки, сделайте echo "<br/><br/>";.В противном случае, если вам нужен только 1 разрыв строки, тег HTML br не имеет закрывающего тега, поэтому </br> в любом случае в этом нет необходимости.

запишите свой текст в текстовый файл и перенаправьте на URL, соответствующий этому файлу

пример кода php

содержанием allow.txt являются

Authorized=True
Duration=1
OutputAnalog=NO_PLAYBACK
OutputDigital=NO_PLAYBACK

содержанием deny.txt являются

Authorized=False
Duration=0
OutputAnalog=NO_PLAYBACK
OutputDigital=NO_PLAYBACK

содержимое php-файла

<?php
$user = $_REQUEST['username'];
$pass = $_REQUEST['password'];
$contentId = $_REQUEST['contentId'];
ob_start(); // ensures anything dumped out will be caught

 // do stuff here
allowUrl = 'http://localhost/allow.txt'; // this can be set based on whatever
$denyUrl = 'http://localhost/deny.txt';
// clear out the output buffer
while (ob_get_status())
{
    ob_end_clean();
}

// no redirect
if($user == "xyz" && $pass == "xyz")
header( "Location: $allowUrl" );
else
header("Location: $denyUrl");
?> 

Или вы могли бы просто поместить это в текстовое поле следующим образом:

<?
$file = 'file.txt';
$contents = file($file); 
$string = implode("",$contents); 
echo '<textarea readonly style="width:100%; height:200px;">';
echo $string;
echo "</textarea><br></br>";
?>

Но только если ты сможешь и это окажется правильным.

file() возвращает массив со строками файла.

Если вы взорвете их без клея, разрывов линий вообще не будет.

Итак, либо получите неизмененное содержимое, используя file_get_contents() (что дает вам строку), или склейте имплод с новой строкой, или

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top