2013-01-24 90 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); 
} 

該如何保存這回爲$文件路徑?

感謝

+0

在f中使用fwrite()寫入字符串ile試試這個鏈接http://stackoverflow.com/questions/235604/overwrite-line-in-file-with-php –

回答

1

我有這個工作在PHP4這樣做:

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

共享下一個靈魂漫遊的PHP4版本的向上贊成;;) –

1

試試這個:

變化:

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

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

注& - 參考分配$線。您對$線的變化將被反映在陣列中包含它們($線)

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

該行寫入$線陣列的修改的內容返回到您的文件路徑 - 串聯數組中的元素與換行符。

+0

在這種情況下,你不需要執行'implode',因爲數組是使用' file'。如果將file_put_contents作爲數據參數傳遞,則file_put_contents將implode數組(不包含膠水),並且該數組已存在換行符,因爲'file'會將它們保留在數組元素中。 – AgentConundrum

+0

很酷。謝謝你讓我知道。我從內存中獲取PHP。 –

+0

沒問題。我必須仔細檢查以確定我自己。 – AgentConundrum