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

Элина

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

Здравствуйте! Искала по форуму подобную проблему, но решение так и не нашла... :(

Вобщем, у меня скриптик, открывает файл file.txt, из него достает данные, которые разделены между собой символом "|". В файле таких строчек - от 2 до 20. Затем данные обрабатываются, какие-то значения меняются, и мне надо записать обратно значения в файл, чтобы формат данных не изменился.

Можно ли как-то записать в файл данные В ОПРЕДЕЛЕННУЮ строку (зная номер строки)? И можно ли перезаписать(изменить) переменную в строке файла?


Пример:

file.txt

name1|id1|phone1|address1|age1|company1|info1
name2|id2|phone2|address2|age2|company2|info2
name3|id3|phone3|address3|age3|company3|info3


Скажем, открыли файл - и надо изменить значение phone2 во второй строчке и age3 в третьей строчке. Это возможно вообще?

Помогите, пожалуйста, уже сутки мучаюсь... не пойму как сделать.
 

amorfis

я стараюсь
Попробуй разбить строку по символу '|'. Это делается с помощью функций explode или split. Ты получишь массив, значениями которого будут твои данные. Меняй их как угодно. А затем сделай обратную операцию, то есть собери массив в строку, с помощью функций implode или join. Ты получишь на выходе стандартную строку. И сможешь тогда смело записать ее в файл.

-~{}~ 11.08.05 00:39:

А что касается записи в конкретную строчку. То разбей файл с помощью функции file. У тебя будет массив строк. Проведи изменения данных. А потом тупо перезапиши файл с помощью fwrite.
 

GoaMind

Новичок
Теоретически тут надо перезаписать всё
PHP:
<?php
$line="1"; # строка, которую нужно изменить
$replace="ля ля ля"; # на что нужно изменить

$file=file("my_file.txt");
$open=fopen("my_file.txt","w");

   for($i=0;$i<count($file);$i++)
   {
      if(($i+1)!=$line){fwrite($open,$file[$i]);}
      else{fwrite($open,$replace."\r\n");}
   }

fclose($open); 
?>
 

WMix

герр M:)ller
Партнер клуба
PHP:
function file2Array( $fileName ){
	$out = array();
	$rows = file( $fileName );
	foreach( $rows as $rowNr => $row )
		$out[$rowNr] = explode( "|", $row );
	return $out;
}

function array2File( $array, $fileName ){
	$fileString = "";
	foreach( $array as row )
		$fileString .= implode( "|", $row );
	$fp = fopen( $fileName, "w" );
	fwrite( $fp, $fileString ); 
	fclose( $fp );
}

$fileName = "file.txt";
$fileArray = file2Array( $fileName );

$fileArray[ Строка ][ Столбец ] = "Новые Денные";

array2File( $fileArray, $fileName );
 

chisto_tolyan

Враг народа
Скажите, у кого-нибудь появляються галлюцинации, после нескольких косяков данной травы?
 

Надя_t

Новичок
Здравствуйте, а ни кто не знает как на оборот сделать (удалить значение из конкретной строчки в файле)?
 
Сверху