Как заменить произвольную строчку в файле?

ilkz

Новичок
Как заменить произвольную строчку в файле?

Всех приветствую!

Вопрос, возможно, смешной, но все же...
Каким способом можно заменить произвольную строчку в текстовом файле?

Заранее всем спасибо!
 

Фанат

oncle terrible
Команда форума
заблокировать файл, прочитать файл в переменную, заменить строчку в переменной, записать переменную в файл, разблокировать файл.
[m]filesystem[/m]
 

ilkz

Новичок
Ну даже не знаю...
Вот, посмотрите, что я наманьячил (не работает). Только чур вслух не смейтесь.

echo '<html><head><title> Изменение статьи. Шаг 5 из 5 (Отчет).</title></head><body>'."\n";

$path=$contentdir.$slash.$main_section.$slash.$sub_section.$slash;
clearstatcache();
if(!is_dir($path))
{
echo "Невозможно создать файл, т.к. не существует директория ";
echo "<font color=green>\\".$main_section.$slash.$sub_section."\</font><br>";
}
else
{
//запись файла статьи
$f=fopen($path.$slash.$article_id,"w+") or die("Невозможно открыть или создать файл с именем".$fname);
fwrite($f,$articletext);
fclose($f);

$f=file($contentdir.$slash.$main_section.$slash.$sub_section.$postfix);
foreach($f as $fs)
{
@list($arthdr,$artdemo,$date,$artfile)=explode("|",$fs);
if($artfile=="" || $date==""){}
else
{
if(trim($artfile)==trim($article_id))
{
$arthdr=$articlehdr.'&nbsp&nbsp&nbsp<font size=10 color=red>Обновление!</font>';
$artdemo=$articledemo;
//$old_date=$date;
$new_date=date("F j, Y, g:i a");
$k=$k*2+1; //формируем позицию данных статьи, которую надо перезаписать
echo 'Position: '.$k.'<br>';
echo $article_id.'<br>';

$new_f=fopen($contentdir.$slash.$main_section.$slash.$sub_section.$postfix,'r+');
while(!feof($new_f))
{
$str=fgets($new_f);
@list($arthdr,$artdemo,$date,$artfile)=explode("|",$str);
if($artfile=="" || $date=="")
{
fputs($new_f,'');
}
else
{
if(trim($artfile)==trim($article_id))
{
$new_s=$arthdr.'|'.$artdemo.'|'.$new_date.'|'.$artfile;
$q=fgets($new_f);
echo $q;
}
else{}
}
}
fclose($new_f);

}
else {}
}
$k++;
}

-~{}~ 04.10.04 17:39:

Хотел сделать следующее:

//===================================
file(файл)
foreach(файл в массив)
{
//элемент массива соответствует строке файла
ищем нужный элемент;
перезаписываем (обновляем) его;
}
выбрасываем массив в файл;
//===================================

А получилась чушь какая-то...
 

Фанат

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

Далее.
Ты и хотел сделать чушь. потому и получилась чушь.
в цикле (если по-другому не можешь) заменять надо только элемент массива!
а записывать надо не вцикле, а после.
 
Сверху