Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Удаление строки из файла


Автор: Jey_k 26.9.2005, 13:55
Файл содержит строки.
Необходимо удалять строку из файла с заданным порядковым номером.
Я, конечно, понимаю, что можно прокручить в файле строки до указаной, записывать в новый файл, пропускать строку с заданным номером, и дописать оставшиеся строки в новый файл. Удалить исходный и переименовать конечный файл.
Но как-то коробит меня такое решене. Нет ли более простого?

Автор: PARROT 26.9.2005, 13:59
Есть решение, но мне оно не очень помогло. Может вам повезет!
Код

if ($id != "") {
    $id--;
    $file=file("file.txt"); 

    for($i=0;$i<sizeof($file);$i++)
        if($i==$id) unset($file[$i]); 

    $fp=fopen("file.txt","w"); 
    fputs($fp,implode("",$file)); 
    fclose($fp);
    }

http://www.codenet.ru/webmast/php/delstr.php

Автор: Jey_k 26.9.2005, 14:12
PARROT
Спасибо. smile

Автор: Mal Hack 26.9.2005, 18:25
А зачем так сложно-то? smile
Код

<?php

$f_arr = file( "file.txt" );

$needle = 2; // Какую строчку нужн удалить.
              // Не забывайте, нумерация начинается с нуля.
array_splice( $f_arr , $needle , 1 );

$f = fopen( "file.txt" , "w" );

for( $i = 0 ; $i < count( $f_arr ) ; $i++ )
  {  fwrite( $f , $f_arr[$i] . "\n" );  }

close($f);

?>

Хотя, запись через fputs и использованием implode - лучше. Только я все-таки писал бы через fwrite

Автор: Jey_k 26.9.2005, 20:40
Mal Hack
Тоже на заметку возьмем

Автор: Mal Hack 26.9.2005, 21:30
Если так сказать полностью код, то это будет выглядеть так:
Код

<?php
$f_arr = file( "file.txt" );
$needle = 2; // Какую строчку нужн удалить.
              // Не забывайте, нумерация начинается с нуля.
array_splice( $f_arr , $needle , 1 );
$f = fopen( "file.txt" , "w" );
fwrite( $f , implode( "\n" , $f_arr ) );  }
fclose( $f );
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)