Удаление строки из файла

1. Сааааа-нёёёёё-к (15.06.2010 / 23:32)
У меня уже голова кипит...
Подскажите как удалить строку из файла.
Я тут написал кое что, но оно не работает. Синтаксических ошибок нет, а строку не удаляет!
Код:
<?php
$id=(int)$_GET['id'];
$line=(int)$_GET['line'];
if($line>0){ $line=$line-1;}
$f=file("db/$id.list");
unset($f[$line]);
//echo $f[$line];
//echo $f[1];
fputs("db/$id.list",$f);
?>


2. Сааааа-нёёёёё-к (15.06.2010 / 23:36)
Проверял. Строка только виртуально удаляеться, а запись не происходит...

3. Вантуз-мен (15.06.2010 / 23:43)
<?
//------------------- Функция удаления строк(и) из файла --------------------//
function delete_lines($files, $lines){

if ($lines!==""){
if (file_exists($files)){

if(!is_array($lines)){

$file=file($files);
$fp=fopen($files,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
if (isset($file[$lines])){unset($file[$lines]);}
fputs ($fp, implode($file));
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp); 
unset ($lines);

} else {

$file=file($files);
$fp=fopen($files,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
foreach($lines as $val){ 
if (isset($file[$val])){unset($file[$val]);}
}
fputs ($fp, implode($file));
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp); 
unset ($lines);

}}}
}


4. Сааааа-нёёёёё-к (15.06.2010 / 23:49)
3. Vantuz, сейчас попробую спасибо! Но хотелось бы знать что не так с моим кодом?smile

5. Вантуз-мен (15.06.2010 / 23:57)
4. StingerIce, ну во-первых строка может иметь и номер ноль,
во-вторых ты пытаешься записать массив $f у тебя даже если и запишется то слово array
в-третьих прежде чем записать файл нужно сперва открыть, ну и закрыть потом естественно

6. Maksim (16.06.2010 / 20:25)
fputs -- Псевдоним функции fwrite()

А это означает что в качестве первого аргумента в этой функции должен идти ресур. А ресурс возвращаеться функц fopen();
А ты передал в качестве первого аргумента строку(в которой адрес файла) - это не правильно.
Если хочешь все одной функцией то вернее будет использовать функцию file_put_contents

URL: https://visavi.net/topics/10546