@Evgeny57

Как редактировать запись в txt файле?

Файл config.txt
Записи такого вида:
1:1:1
2:2:1
Первое значение, до двоеточия уникально
Как взять строку с 1, и добавить в конце, через двоеточие, еще какое либо значение
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега PHP
♬♬
Текстовый файл – очень неудобное хранилище для данных. Чтобы вставить что-то в середине файла, придётся создавать новый файл с обновлённым содержанием, и заменить старый новым. Нет возможность дописать что-то в середине: хвост «автомагически» не отодвинется.

spoiler
function appendValue($key, $value) {
  $filepath = "./config.txt"; // путь к файлу
  if (!file_exists($filepath)) throw "File not found";
  
  $divider = PHP_EOL; // разделитель строк
  
  $rows = explode($divider, file_get_contents($filepath));
  $tmpfname = tempnam(sys_get_temp_dir(), 'Toster');  
  $fh = fopen($tmpfname, 'w');
  
  $replaced = 0;
  foreach($rows as $row) {
    $data = explode(':', $row);
    if (0 === count($data)) continue;
    if ($data[0] == $key) {
      array_push($data, $value);
      $row = implode(':', $data);
      $replaced++;
    }
    
    fputs($fh, $row . $divider);
  }
  
  fclose($fh);
  
  // поменять файлы местами
  unlink($filepath);
  rename($tmpfname, $filepath);
  
  return $replaced; // кол-во обновлённых строк. Вдруг, неуникален индекс?
}


appendValue(2, 33);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы