2013-01-24 4 views
0

파일을 읽은 다음이 파일을 한 행씩 살펴 봅니다.파일의 값 바꾸기 및 저장

$filePath = $_REQUEST['fn']; 
$lines = file(); 
foreach ($lines as $line_num => $line) 
{ 
if(stristr($line,'Device') && stristr($line,'A=0FEDFA')) $line = str_replace ("ID=\"", "ID=\"***",$line); 

if(stristr($line,'Style')) $line = str_replace ("ID=\"", "ID=\"***",$line); 
} 

(가) 어떻게 $적인 filePath로이 다시 저장합니까 : 값이 업데이트되는 라인에 일치하는 경우

?

+0

f 문자열을 쓰기 위해 fwrite() 사용 이 링크를 사용해보십시오. http://stackoverflow.com/questions/235604/overwrite-line-in-file-with-php –

답변

1

나는 PHP4에서이 일을이 작업을 가지고있다 :)

+0

방황하는 다음 영혼을 위해 PHP4 버전을 공유하기위한 upvote ...;) –

1

이 시도

감사 :

변화 :

foreach ($lines as $line_num => $line) 

& 주

foreach ($lines as $line_num => &$line) 

에은 - 참고로 $ 라인을 할당합니다. $ 라인에 당신이 만드는 변경 사항은 다음

file_put_contents($filePath, implode("\n", $lines)) 

그 선이 배열의 요소들을 연결 경로 - 파일에 다시 $ 라인 어레이의 변경된 콘텐츠를 쓰는 그들 ($ 라인)이 포함 된 배열에 반영됩니다 개줄로. 사용 후

foreach ($lines as $line_num => $line) 
{ 
if(stristr($line,'Device') && stristr($line,'A=0FEDFA')) $line[$line_num] = str_replace ("ID=\"", "ID=\"***",$line); 

if(stristr($line,'Style')) $lines[$line_num] = str_replace ("ID=\"", "ID=\"***",$line); 
} 

:

fileputcontents($filePath, ("\n", $lines)) 

및 모든 작동하는 것 같군 PHP4

function fileputcontents($filename, $data) 
{ 
if($file = fopen($filename, 'w')) 
    { 
    $bytes = fwrite($file, is_array($data) ? implode('', $data) : $data); 
    fclose($file); return $bytes; // return the number of bytes written to the file 
    } 
} 

이 기능

+0

이 경우에는'implode'을 할 필요가 없습니다. 배열은' 파일 '. 'file_put_contents'는 데이터 매개 변수로 전달 된 배열을 접착제없이 내파하며 배열은 이미'file'이 배열 요소에 그대로 남아 있기 때문에 배열에 이미 개행 문자가 있습니다. – AgentConundrum

+0

차가움. 저를 똑바로 설정해 주셔서 고마워요. 나는 기억에서 PHPing하고 있었다. –

+0

문제 없습니다. 나는 자신을 확신하기 위해 다시 확인해야했다. – AgentConundrum

관련 문제