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]   

> Без описания
android
Отправлено: 15 Февраля, 2012 - 16:44:33
Post Id


Посетитель


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


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




Привет, есть txt файл (БД)

Допустим 50 строчек.

Нужно: Оставить первые 5 строчек.

2 вопрос...

Как добавить в начало файла строку?

PHP:
скопировать код в буфер обмена
  1.  
  2.         $q = "TEST";
  3.         $p = fopen('test.dat', 'r+');
  4.         fwrite($p, $q);
  5.         fclose($p);
  6.  


У меня добавляется 1 строка, а при повторном запросе она заменяется новыми данными. Нужно что бы просто строка добавлялась в начало файла.
 
 Top
snikers987
Отправлено: 15 Февраля, 2012 - 18:36:12
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




1.
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgData = file('file.txt');
  3. file_put_contents('file.txt', array_slice($rgData, 0, 5));
  4.  

2.
PHP:
скопировать код в буфер обмена
  1.  
  2. $sNewString = "New string\n";
  3. file_put_contents('file.txt', $sNewString.file_get_contents('file.txt'));
  4.  

(Отредактировано автором: 15 Февраля, 2012 - 18:50:07)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
android
Отправлено: 15 Февраля, 2012 - 18:58:43
Post Id


Посетитель


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


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




$rgData = file('file.txt');

file_put_contents('file.txt', array_slice($input, 0, 5));

rgData к чему?
(Добавление)
$rgData = file('file.txt');

file_put_contents('file.txt', array_slice($rgData, 0, 5));

не работает
(Добавление)
Спасибо, все работает!
 
 Top
snikers987
Отправлено: 15 Февраля, 2012 - 19:05:29
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




android пишет:

не работает

быть такого не может


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
EuGen Администратор
Отправлено: 15 Февраля, 2012 - 19:12:43
Post Id


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


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


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




snikers987
Плохо весь файл считывать ради 5 строк. Аналогично и для второго случая - незачем вообще считывать данные из файла, если нужно лишь добавить строку в начало.
1.
PHP:
скопировать код в буфер обмена
  1. $sFile  = '/path/to/file';
  2. $rFile  = fopen($sFile, 'r');
  3. $iCount = 5;
  4. $sData  = '';
  5. $i=0;
  6. while(!feof($rFile) && $i<$iCount)
  7. {
  8.    $sData.=fgets($rFile).PHP_EOL;
  9.    $i++;
  10. };
  11. fclose($rFile);
  12. file_put_contents($sFile, $sData);

2.
PHP:
скопировать код в буфер обмена
  1. $sFile='/path/to/file';
  2. $rFile=fopen($sFile, 'r+');
  3. $sData='TEST';
  4. fwrite($rFile, $sData.PHP_EOL);
  5. fclose($rFile);

- это хороший пример, когда краткость кода не ведет к его оптимальности (представьте что размер файла измеряется в гигабайтах)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 15 Февраля, 2012 - 19:15:21
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




Цитата:
представьте что размер файла измеряется в гигабайтах

ТС написал о 50 строках, от этого я и писал исходя из конкретного случая

EuGen
PHP:
скопировать код в буфер обмена
  1. $sFile='/path/to/file';
  2. $rFile=fopen($sFile, 'r+');
  3. $sData='TEST';
  4. fwrite($rFile, $sData);
  5. fclose($rFile);

Этот код не дописывает строку в начало файла, а заменяет ее.
При чем заменяет первую, а вторую затирает

(Отредактировано автором: 15 Февраля, 2012 - 19:20:46)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
EuGen Администратор
Отправлено: 15 Февраля, 2012 - 19:26:58
Post Id


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


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


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




http://php.net/manual/en/function.fopen.php пишет:
'r+' Open for reading and writing; place the file pointer at the beginning of the file.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 15 Февраля, 2012 - 21:43:05
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




EuGen пишет:
http://php.net/manual/en/function.fopen.php пишет:
'r+' Open for reading and writing; place the file pointer at the beginning of the file.

Я тоже это читал, но Вы попробуйте запустить скрипт. По крайней мере на win так как я написал


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 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