Удаление строки из файла
Я очень часто встречаю вопрос типа "Как удалить определенную строку из файла?". |
Для начала было бы совсем не плохо создать текстовый файл. Назовём его file.txt, который будет состоять из строк, которые мы будем удалять:
строка один
строка два
строка три
строка четыре
строка пять
Затем создаём что-нибудь типа file.php, занимающий около 11 строк!
<?
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);
}
?>
Сначала определимся, что для удаления определенной строки нам нужен её номер. Его мы будем передавать с идентификатором id: file.php?id=2 (удалим строку под номером ТРИ, так как исчисления элементов в массиве ведётся с нуля, но позже мы это сгладим).
функция file() считывает весь файл в массив (каждая строка - это его
элемент);
$id-вычитает один из нашего идентификатора, так что 2 становится 2, а
3 - 3;
unset($file[$i]) удаляет или обнуляет элемент массива (но только из памяти,
т. е. виртуально:);
implode() объединяет массив в одну строку. Это очень важно, так как если
бы это опустили, наш файл бы похудел до бесполезной записи Array;
« Назад