Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод строк из файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
iLnes
Отправлено: 26 Марта, 2012 - 00:33:43
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Вообщем, я совсем начинающий в PHP и тут такой вопрос:
У меня есть file.txt, мне нужно написать такой скрипт, который бы читал несколько первых строк в файле (задано параметром, допустим 4 первых строки), и выводил их в текстовое поле, но после того, как вывел, удалял их из этого же самого текстового файла.

Кто знает как сделать?
 
 Top
DlTA
Отправлено: 26 Марта, 2012 - 00:47:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




придется читать весь файл и записывать заново, если файлы предполагаются "маленького" размена то можно воспользоваться file для чтения всего и занесения в массив, и array_slice для обрезания с какой либо стороны, работает как substr.

если же предполагается работать с большими файлами то тут уж не обойтись без создания временного файла в который будет записываться построчно содержимое из первого файла а потом удаление первого и переименование второго.
 
 Top
iLnes
Отправлено: 26 Марта, 2012 - 00:56:12
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




DlTA пишет:
придется читать весь файл и записывать заново, если файлы предполагаются "маленького" размена то можно воспользоваться file для чтения всего и занесения в массив, и array_slice для обрезания с какой либо стороны, работает как substr.

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

Файл будет небольшой, примерно 200 строчек, длина каждой строки от 10 до 25 символов.

Примеры не могли бы вы дать? Открытие и вывод определенной строки в файле я знаю как сделать, а как первые 4 допустим сделать - не знаю. Так же проблема как раз таки с перезаписью файла.

(Отредактировано автором: 26 Марта, 2012 - 00:57:24)

 
 Top
DlTA
Отправлено: 26 Марта, 2012 - 03:20:20
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ОШИБКА (Отобразить)

ИСПРАВЛЕН (Отобразить)

а вообще ниже приведена рабочая функция.

(Отредактировано автором: 26 Марта, 2012 - 12:58:45)

 
 Top
iLnes
Отправлено: 26 Марта, 2012 - 10:53:18
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




DlTA пишет:
как то так,
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $fileName = "file.txt"; // имя обрабатываемого файла
  3. $from = 4; // количество строк для обработки
  4. $arreyLines = file($fileName); // чтение файла в массив
  5. $outLines = array_slice($arreyLine,0,$from); // массив строк для дальнейше обработки
  6. file_put_contents($fileName,implode(PHP_EOL,array_slice($arreyLine,$from-1))); // запись в файл новых строк без начальных

после выполнения скрипта, удаляет все строки в файле. То есть, было 10 строк, и после выполнения скрипта удалило все 10 строк.
Хм...
 
 Top
EuGen Администратор
Отправлено: 26 Марта, 2012 - 12:09:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. function sliceFile($sFile, $iLines)
  2. {
  3.     $rgLines    = file($sFile);
  4.     $rgResult   = array_slice($rgLines, 0, $iLines);
  5.     file_put_contents($sFile, array_slice($rgLines, $iLines));
  6.     return $rgResult;
  7. }
  8.  
  9. $iLines = 4;
  10. $sFile  = 'test.txt';
  11.  
  12. //var_dump(sliceFile($sFile, $iLines));

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
iLnes
Отправлено: 26 Марта, 2012 - 13:16:25
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Скрипт от EuGen работает на ура!
Тогда вот такой вопрос еще.
При выполнение, выдало такой текст:
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(4) { [0]=> string(5) "1:2 " [1]=> string(5) "3:4 " [2]=> string(5) "5:6 " [3]=> string(5) "7:8 " }

Как сделать так, чтобы выводило просто:
1:2
3:4
5:6

???
 
 Top
EuGen Администратор
Отправлено: 26 Марта, 2012 - 13:18:57
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Имеется ввиду - что нужен просто вывод?
PHP:
скопировать код в буфер обмена
  1. function sliceFile($sFile, $iLines)
  2. {
  3.     $rgLines    = file($sFile);
  4.     $rgResult   = array_slice($rgLines, 0, $iLines);
  5.     file_put_contents($sFile, array_slice($rgLines, $iLines));
  6.     return $rgResult;
  7. }
  8.  
  9. $iLines = 4;
  10. $sFile  = 'test.txt';
  11. echo(join('<br/>', sliceFile($sFile, $iLines)));


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
iLnes
Отправлено: 26 Марта, 2012 - 13:43:57
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Не хочу создавать новую тему, поэтому спрошу тут сразу же:
Вывести этот текст в <textarea> возможно? и как это сделать?
 
 Top
EuGen Администратор
Отправлено: 26 Марта, 2012 - 13:48:20
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. echo('<textarea>'.join('', sliceFile($sFile, $iLines)).'</textarea>');


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
iLnes
Отправлено: 26 Марта, 2012 - 16:00:09
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Последние и глупые вопросы:
1) Как сделать textarea по центру экрана?
2) Как прикрутить авто-размер к textarea(http://james.padolsey.com/javascript/jquery-plugin-autoresize/) (в зависимости от количества текста, textarea расширяется сама до нужных размеров)
3) Как добавить кнопку, чтобы по её нажатию выполнялся код, который мне дали выше. (от EuGen)

Спасибо заранее.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB