2012-10-30 2 views
1

내 텍스트 파일에는 다음이 포함플랫 파일의 특정 줄을 덮어 쓰는 방법은 무엇입니까?

a 
b 
c 
d 
e 

난 내가 입력 상자의 데이터에 입력 무엇 이건 라인 3 만 (즉 교체 "C")를 덮어 쓸 수 있도록 내 코드를 수정하는 방법을 알아낼 수 없습니다 '. 아래 코드는 텍스트 만 상자 경우에 3 행을 읽어 즉, I, 그것은 주변의 다른 방법으로 작업이

$data = $_POST['data']; 
$file = "data.txt"; 

$fp = fopen($file, "w") or die("Couldn't open $file for writing"); 

fwrite($fp, $data) or die("Couldn't write values to file"); 
fclose($fp); 

다음과 같이 내 코드는 현재 입력 상자 '데이터'의 내용은 완전히 내 파일을 대체한다 페이지가 처음로드됩니다.

$file = "data.txt"; 
$lines = file($file); 
echo stripslashes($lines[2]); 

누구든지이 작업을 수행하는 데 필요한 코드를 조언 할 수 있습니까?

답변

3

유일한 방법은 전체 파일을 읽고 3 행을 변경 한 다음 모두 다시 작성하는 것입니다. 기본적으로,과 같이 : -이 파일 (따라 모든 행을 읽고) 다음은 라인에게 나보다 3

+0

빠른 손가락을 사용 Btw는

$lines = file($file); $lines[2] = $_POST['data']; file_put_contents($file, implode("\n", $lines)); 

, 독서 코드는 "ONLY"3 행을 읽지 않습니다 : P – Chris

+0

"* 유일한 길 *"는 "* 파일에서 위치를 저장하거나 기억하지 않기 때문에 *"; 'fseek() '를 사용하면 파일의 위치로 건너 뛰고 그 위치에서 덮어 쓰기 및/또는 추가 할 수 있습니다 (전체 파일을 읽을 필요가 없음). – newfurniturey

+0

대체 행이 텍스트 데이터의 경우 거의없는 기존 행의 정확한 길이 인 경우에만 찾기를 사용할 수 있습니다. 그러나 확실한 것은, 길이가 고정 된 레코드를 가지고 있다면, 추구하는 것이 합리적입니다.하지만 데이터베이스를 다시 작성하는 것입니다. –

관련 문제