Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Альтернатива "nl2br" для текстовых файлов (?)
 
 автор: Владимир22   (05.06.2006 в 23:37)   письмо автору
 
 

Кто знает, как можно правильно вывести файл для чтения, чтобы при выводе отображались записанные пробелы и переводы строк.
Ниже код читает файл подряд, игнорируя всё выше сказанное.

<?  
$filetemp 
"temp.txt";  
readfile ($filetemp);
?> 


Знаю, есть функция
nl2br, но для корректного отображения больших файлов (в несколько десятков строк) она почему-то не подходит (пробовал - readfile (nl2br($filetemp));. - не работает). Как быть в таких случаях? или в чём моя ошибка?

   
 
 автор: valenok   (06.06.2006 в 00:08)   письмо автору
 
   для: Владимир22   (05.06.2006 в 23:37)
 

$file=file('text.txt');
for($i=0;$i<count($file);$i++){
echo $file."<BR>\n";

   
 
 автор: Владимир22   (06.06.2006 в 00:27)   письмо автору
 
   для: valenok   (06.06.2006 в 00:08)
 

У меня с этим кодом читает файл так:
Array
Array
Array
Array
Array
Array
Array
......
Что-то не так...

   
 
 автор: Саня   (06.06.2006 в 00:32)   письмо автору
 
   для: Владимир22   (05.06.2006 в 23:37)
 

<?php
$f 
file_get_contents("file.txt");
print 
nl2br($f);
?>

   
 
 автор: valenok   (06.06.2006 в 00:46)   письмо автору
 
   для: Саня   (06.06.2006 в 00:32)
 

echo $file[$i]

   
 
 автор: Владимир22   (06.06.2006 в 01:04)   письмо автору
 
   для: Саня   (06.06.2006 в 00:32)
 


<?php 
$f 
file_get_contents("file.txt"); 
print 
nl2br($f); 
?>


$file=file('text.txt');
for($i=0;$i<count($file);$i++){
echo $file[$i]."<BR>\n";


Эти коды уже делают переносы строки, но не понимают пробелы (сдвиги слов вдоль строки), всё форматируют по левому краю и стягивают все раздвинутые слова.

   
 
 автор: Shorr Kan   (06.06.2006 в 01:21)   письмо автору
 
   для: Владимир22   (06.06.2006 в 01:04)
 


<?
$file
=file_get_contents('text.txt');
$file=str_replace("\n","<br>\n",$file); 
print 
$file;
?>


Таким же макаром - сдвиг строки. Только я не знаю, как сдвиг будет... ведь не \r же...

   
 
 автор: Саня   (06.06.2006 в 03:39)   письмо автору
 
   для: Владимир22   (06.06.2006 в 01:04)
 

но не понимают пробелы
Дело в том, что несколько идущих подряд пробелов браузер воспринимает как один. И, соответственно, выводит на экран один пробел. Чтобы этого не случилось нужно заменить обычные пробелы на неразрывные:
<?php
$f 
str_replace(" ""&nbsp;"nl2br(file_get_contents("file.txt")));
print 
$f;
?>

   
 
 автор: valenok   (06.06.2006 в 07:49)   письмо автору
 
   для: Саня   (06.06.2006 в 03:39)
 

<div align=>

   
 
 автор: Владимир22   (06.06.2006 в 11:15)   письмо автору
 
   для: Саня   (06.06.2006 в 03:39)
 

Не подходит.В этом случае пробелы сохраняются, но разлезаются по швам таблицы и ячейки.

   
 
 автор: Trianon   (06.06.2006 в 11:25)   письмо автору
 
   для: Владимир22   (06.06.2006 в 11:15)
 


echo '<pre>';
readfile ($filetemp); 
echo '</pre>';


А правильнее- посылать заголовок text/plain

   
 
 автор: Владимир22   (06.06.2006 в 16:07)   письмо автору
 
   для: Trianon   (06.06.2006 в 11:25)
 

Куда посылать заголовок - при записи в файл или при чтении из него? Если можно, поясните...

   
 
 автор: Владимир22   (06.06.2006 в 16:07)   письмо автору
 
   для: Trianon   (06.06.2006 в 11:25)
 

Куда посылать заголовок - при записи в файл или при чтении из него? Если можно, поясните...

   
 
 автор: Trianon   (06.06.2006 в 16:36)   письмо автору
 
   для: Владимир22   (06.06.2006 в 16:07)
 

Заголовок с полем, которое указывает тип документа.
<?
  header
("Content-Type: text/plain; charset=windows-1251");
  
readfile("file.txt");
?>

   
 
 автор: cheops   (06.06.2006 в 11:20)   письмо автору
 
   для: Владимир22   (05.06.2006 в 23:37)
 

>readfile (nl2br($filetemp));
Попробуйте лучше такое решение
<?php
  $contents 
file_get_contents($filetemp);
  echo 
nl2br($contents);
?>

   
 
 автор: Владимир22   (06.06.2006 в 16:09)   письмо автору
 
   для: cheops   (06.06.2006 в 11:20)
 

Это тоже не сохраняет пробелы между словами и сдвигает всё друг к другу.

   
 
 автор: Киналь   (06.06.2006 в 19:01)   письмо автору
 
   для: Владимир22   (06.06.2006 в 16:09)
 

Вам же уже посоветовали - используйте тег <pre>. Он. в общем-то, для этого и предназначен.

Или можете str_replace'ом заменить все пробелы на &nbsp;

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования