Как удалить строку из текстового файла.

  • Автор темы Автор темы sergMX
  • Дата начала Дата начала

sergMX

Новичок
Как удалить строку из текстового файла.

Мож кто знает,
мне нужно php скриптом удалить определенную строку из текстового файла,например десятую,
это реально сделать.
 
Теперь другая проблема,после удаления строки,в конце других строк появляется непонятный квадратик,никак от него не избавиться,может кто сталкивался с этим...
 
sergMX
Дай угадаю, запускаешь под windows, после изменения всё будто в одну строку и в конце каждой строки (строки исходного файла) стоит квадратик. Так?
 
Почти угадал,строки все остаются(не в одну строку),и в конце каждой квадратик.
 
sergMX
Посмотри в hex-редакторе. 0d и 0a в конце? А вообще, приведи код. Ты скорее всего намутил что-то с \r (0d) и \n (0a)
 
Господи, чё вы морочитесь...
Я думаю на этом примере можно разобраться:
PHP:
$file = './text.txt'; //фаил который надо редактировать
$list = array();      //для хранения открытого файла

$list = file($file) or die('Не открывается'); // текстовик в массив

unset($list[5]);// удаляем шестую и восьмую строчки
unset($list[7]);// (помним что в массиве первый элемент 0)

// Открываем фаил, сохраняем в нём всё что осталось
$f = fopen($file, 'w+');
flock($f, LOCK_EX);
foreach($list as $string)
{
        fwrite($f, $string);
}
flock($f, LOCK_UN);
fclose($f);
Вроде должен работать, но я не проверял))
 
Ну особо то я не мутил...
вот этот код

посылаю переменную test.php?id=0
<?
$file=file("test.txt");
$fp=fopen("test.txt","w");
for($i=0;$i<sizeof($file);$i++)
{
if($i==$id)
{
unset($file[$i]);

}
}
fputs($fp,implode("",$file));
fclose($fp);
?>
 
Да цикл и правда незачем,
квадраты ушли.
Всем спасибо.

-~{}~ 22.01.06 04:45:

Извиняюсь, может глупый вопрос задам(с php мало знаком).
Допустим у меня есть текстовый файл в нем 10 строк текста,
я посылаю скрипту 2 переменные с номерами строк(например 9 и 2),
он должен их поменять местами.
Хоть примерно подскажите как это реализовать.
 
точно так же, как удаление.
считываешь файл, меняешь строки, записываешь обратно.

считываешь свои строки в массив, [m]file[/m] (в массиве нумерация начинается С НУЛЯ!)
берёшь, запоминаешь значение второй строки.
присваиваешь второй значение девятой
присваиваешь девятой запомненное ранее значение второй.
записываеешь [m]fwrite[/m] строку, полученную из массива с помощью [m]implode[/m]

понятно?
 
Сверху