используя этот код
<?php foreach (glob("*.txt") as $filename) { $file = $filename; $contents = file($file); $string = implode($contents); echo $string; echo "<br></br>"; } ?>
я могу отображать концы любого txt-файла в папке, в которой проблема – это все форматирование, и т. д. из файла txt пропускается
txt-файл выглядит так:
#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 на «text / plain»; то есть:
header('Content-Type: text/plain'); echo file_get_contents('path/to/file');
Как всегда, HTTP-заголовки должны быть отправлены до отправки любого содержимого в браузер.
Замена \n
на <br/>
не будет устранять проблемы усечения пробелов; то есть удаление смежных пространств и / или вкладок. Самый простой способ обойти это, как уже упоминалось, – использовать <pre>
чтобы заключить содержимое файла. К сожалению, этого недостаточно для удовлетворения XHTML. Существует несколько символов, которые недействительны в XML, если они не были правильно экранированы, в частности, включая: &
, <
и >
.
К счастью, это также легкое исправление с использованием метода str_replace
:
$raw = file_get_contents('path/to/file'); echo '<pre>'; echo str_replace($raw, array('>','<','&','%'), array('>','<','&','%')); echo '</pre>';
file () возвращает массив с строками файла. Если вы взорвите тех, у кого нет клея, не будет никаких разрывов линий.
Таким образом, либо получить содержимое немодифицированным с помощью file_get_contents () (который дает вам строку), либо приклеить implode с помощью новой строки или
Питер Стьюфсанд имел правильную идею, передавая второй аргумент функции implode, поэтому я не буду об этом говорить. Я хочу отметить, что ваше собственное echo "<br></br>";
код не создает допустимый HTML. Если вы делаете HTML и хотите разрывать две строки, выполните echo "<br><br>";
и если вы делаете XHTML и хотите 2 разрыва строки, сделайте echo "<br/><br/>";
, В противном случае, если вам нужен только 1 разрыв строки, тэг HTML br не имеет закрывающего тега, поэтому </br>
не требуется в любом случае.
напишите свой текст в .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"); ?>
Или вы можете просто поместить его в текстовое пространство, подобное этому:
<? $file = 'file.txt'; $contents = file($file); $string = implode("",$contents); echo '<textarea readonly style="width:100%; height:200px;">'; echo $string; echo "</textarea><br></br>"; ?>
Но только если вы можете и все получится правильно.