Для того чтобы удалять из файла по ид, нужно его структуризировать. А структура бывает разной, я приведу один пример который подойдет для структуры такого вида:
| Цитата | | 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'], '|'); // ... ?>
| |