Удаление строки из файла
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, сейчас попробую спасибо! Но хотелось бы знать что не так с моим кодом?
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