отображать содержимое .txt файла используя php - PullRequest
5 голосов
/ 30 мая 2009

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

<?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

я получаю результат, похожий на

#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

Ответы [ 9 ]

9 голосов
/ 30 мая 2009

implode по умолчанию - пустая строка. Вы должны позвонить implode примерно так:

  $string = implode("<br>", $contents);
8 голосов
/ 30 мая 2009

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

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

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

4 голосов
/ 30 мая 2009

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

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

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

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

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

<?php
foreach (glob("*.txt") as $filename) { 
  $str = file_get_contents($filename);
  echo preg_replace('!\r?\n!', '<br>', $str);
}
?>
1 голос
/ 31 мая 2009

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

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

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

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

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

(X) Вывод HTML

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

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

<code>$raw = file_get_contents('path/to/file');
echo '<pre>';
echo str_replace($raw, array('>','<','&','%'), array('&gt;','&lt;','&amp;','&#37;'));
echo '
';
1 голос
/ 30 мая 2009

вставлять содержимое текстового файла между теги

0 голосов
/ 21 апреля 2015

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

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

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

0 голосов
/ 13 октября 2014

напишите свой текст в файле .txt и перенаправьте на 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");
?> 
0 голосов
/ 30 мая 2009

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

0 голосов
/ 30 мая 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...