Справочники, инструменты, документация

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

Как удалить определенную строку из текстового файла? Создадим текстовый файл `file.txt`, который будет состоять из строк, которые мы будем удалять:
строка один
строка два
строка три
строка четыре
строка пять

Затем создаём что-нибудь типа file.php:

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.