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. android - 15 Февраля, 2012 - 16:44:33 - перейти к сообщению
Привет, есть txt файл (БД)

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

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

2 вопрос...

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

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


У меня добавляется 1 строка, а при повторном запросе она заменяется новыми данными. Нужно что бы просто строка добавлялась в начало файла.
2. snikers987 - 15 Февраля, 2012 - 18:36:12 - перейти к сообщению
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.  
3. android - 15 Февраля, 2012 - 18:58:43 - перейти к сообщению
$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));

не работает
(Добавление)
Спасибо, все работает!
4. snikers987 - 15 Февраля, 2012 - 19:05:29 - перейти к сообщению
android пишет:

не работает

быть такого не может
5. EuGen - 15 Февраля, 2012 - 19:12:43 - перейти к сообщению
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);

- это хороший пример, когда краткость кода не ведет к его оптимальности (представьте что размер файла измеряется в гигабайтах)
6. snikers987 - 15 Февраля, 2012 - 19:15:21 - перейти к сообщению
Цитата:
представьте что размер файла измеряется в гигабайтах

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

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

Этот код не дописывает строку в начало файла, а заменяет ее.
При чем заменяет первую, а вторую затирает
7. EuGen - 15 Февраля, 2012 - 19:26:58 - перейти к сообщению
http://php.net/manual/en/function.fopen.php пишет:
'r+' Open for reading and writing; place the file pointer at the beginning of the file.
8. snikers987 - 15 Февраля, 2012 - 21:43:05 - перейти к сообщению
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 так как я написал

 

Powered by ExBB FM 1.0 RC1