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

sergMX

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

Мож кто знает,
мне нужно php скриптом удалить определенную строку из текстового файла,например десятую,
это реально сделать.
 

sergMX

Новичок
Теперь другая проблема,после удаления строки,в конце других строк появляется непонятный квадратик,никак от него не избавиться,может кто сталкивался с этим...
 

white phoenix

Новичок
sergMX
Дай угадаю, запускаешь под windows, после изменения всё будто в одну строку и в конце каждой строки (строки исходного файла) стоит квадратик. Так?
 

sergMX

Новичок
Почти угадал,строки все остаются(не в одну строку),и в конце каждой квадратик.
 

white phoenix

Новичок
sergMX
Посмотри в hex-редакторе. 0d и 0a в конце? А вообще, приведи код. Ты скорее всего намутил что-то с \r (0d) и \n (0a)
 

hohoho

Новичок
Господи, чё вы морочитесь...
Я думаю на этом примере можно разобраться:
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);
Вроде должен работать, но я не проверял))
 

sergMX

Новичок
Ну особо то я не мутил...
вот этот код

посылаю переменную 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);
?>
 

sergMX

Новичок
Да цикл и правда незачем,
квадраты ушли.
Всем спасибо.

-~{}~ 22.01.06 04:45:

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

Фанат

oncle terrible
Команда форума
точно так же, как удаление.
считываешь файл, меняешь строки, записываешь обратно.

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

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