Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ищу скрипт.


Автор: Osrus 14.12.2004, 22:30
Ищу скрипт, функция - удаление из текстовго файла по id определенного сообщения... Нужен конкретный пример.

Автор: IZ@TOP 14.12.2004, 23:05
Для того чтобы удалять из файла по ид, нужно его структуризировать. А структура бывает разной, я приведу один пример который подойдет для структуры такого вида:
Цитата
id [separator] данные1 [separator] данные n...

Код

<?php

function UnsetLinesFromFile($FilePath, $Idents, $Separator) {
$Lines  = file($FilePath);
// Считываем строки в из файла в переменную.
$Size  = sizeof($Lines);
// Размер полученых строк
if(is_array($Idents)) {
 // Если в качестве удаляемых идентификаторов строк послан
 // массив
 for($itr = 0; $itr < $Size; $itr++) {
  $ex   = explode($Separator, trim($Lines[$itr]));
  // Разбиваем строку по передаваемому разделителю через переменную $Separator
  if(!in_array($ex[0], $Idents)) $NewLines = $Lines[$i];
  // Заносим в новый массив все строки в которых id не равен передаваемому
 }
} else {
 // Если в качестве удаляемых идентификаторов строк послан
 // один идентификатор
 for($itr = 0; $itr < $Size; $itr++) {
  $ex   = explode($Separator, trim($Lines[$itr]));
  // Разбиваем строку по передаваемому разделителю через переменную $Separator
  if($ex[0] != $Idents) $NewLines = trim($Lines[$i]);
  // Заносим в новый массив все строки в которых id не равен передаваемому
 }
}
$fh   = fopen($FilePath, "w");
flock($fh, LOCK_EX);
fputs($fh, implode("r\n", $NewLines);
flock($fh, LOCK_UN);
fclose($fh);
}

?>


Пример использования:
Код

<?php
// ...
// Удаляем строку с идентификатором переданным из формыметодом POST.
UnsetLinesFromFile('db/messages.db', $_POST['delete_id'], '|');
// ...
?>

Автор: Osrus 15.12.2004, 00:21
IZ@TOP Хм... Спасибо, кое-что прояснил ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)