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
Форумы портала PHP.SU :: Версия для печати :: Вывод строк из файла
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Вывод строк из файла

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

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

Кто знает как сделать?
2. DlTA - 26 Марта, 2012 - 00:47:27 - перейти к сообщению
придется читать весь файл и записывать заново, если файлы предполагаются "маленького" размена то можно воспользоваться file для чтения всего и занесения в массив, и array_slice для обрезания с какой либо стороны, работает как substr.

если же предполагается работать с большими файлами то тут уж не обойтись без создания временного файла в который будет записываться построчно содержимое из первого файла а потом удаление первого и переименование второго.
3. iLnes - 26 Марта, 2012 - 00:56:12 - перейти к сообщению
DlTA пишет:
придется читать весь файл и записывать заново, если файлы предполагаются "маленького" размена то можно воспользоваться file для чтения всего и занесения в массив, и array_slice для обрезания с какой либо стороны, работает как substr.

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

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

Примеры не могли бы вы дать? Открытие и вывод определенной строки в файле я знаю как сделать, а как первые 4 допустим сделать - не знаю. Так же проблема как раз таки с перезаписью файла.
4. DlTA - 26 Марта, 2012 - 03:20:20 - перейти к сообщению
ОШИБКА (Отобразить)

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

а вообще ниже приведена рабочая функция.
5. iLnes - 26 Марта, 2012 - 10:53:18 - перейти к сообщению
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 строк.
Хм...
6. EuGen - 26 Марта, 2012 - 12:09:27 - перейти к сообщению
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));

?
7. iLnes - 26 Марта, 2012 - 13:16:25 - перейти к сообщению
Скрипт от 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

???
8. EuGen - 26 Марта, 2012 - 13:18:57 - перейти к сообщению
Имеется ввиду - что нужен просто вывод?
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)));
9. iLnes - 26 Марта, 2012 - 13:43:57 - перейти к сообщению
Не хочу создавать новую тему, поэтому спрошу тут сразу же:
Вывести этот текст в <textarea> возможно? и как это сделать?
10. EuGen - 26 Марта, 2012 - 13:48:20 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo('<textarea>'.join('', sliceFile($sFile, $iLines)).'</textarea>');
11. iLnes - 26 Марта, 2012 - 16:00:09 - перейти к сообщению
Последние и глупые вопросы:
1) Как сделать textarea по центру экрана?
2) Как прикрутить авто-размер к textarea(http://james.padolsey.com/javascript/jquery-plugin-autoresize/) (в зависимости от количества текста, textarea расширяется сама до нужных размеров)
3) Как добавить кнопку, чтобы по её нажатию выполнялся код, который мне дали выше. (от EuGen)

Спасибо заранее.

 

Powered by ExBB FM 1.0 RC1