我試圖搜索文本文件,如果某一行包含特定的密鑰ID,我想更新整行,如果不添加新行。PHP在文本中添加或編輯行文件
因此,基於這個文本文件:
admin,1234,ID1345,NW
staff,1325,ID1001,NE
staff,2157,ID2003,SW
staff,8519,ID3001,NS
我要搜索ID1345
,然後只更新該行,其他行留,正是因爲他們的。如果沒有行包含ID1345
,則在文本文件中添加一行。
到目前爲止我有:
$search = 'ID1345';
$result = 'admin,6698,ID1345,OP';
$reading = fopen('myfile', 'r');
$writing = fopen('myfile.tmp', 'w');
$replaced = false;
while (!feof($reading)) {
$line = fgets($reading);
if (stristr($line, $search)) {
$line = "$result\n";
$replaced = true;
}
fputs($writing, $line);
}
if (!$replaced) fputs($writing, "$result\n");
fclose($reading); fclose($writing);
rename('myfile.tmp', 'myfile');
這似乎爲找工作和更換,但如果該行不存在,它不斷增加它不只是一次。
我知道這是由於if (!$replaced)
行,但我不知道如何做到這一點。
上面的例子雖小,但有可能是文件中的幾千項..
感謝
備註:是否有一個特殊/特定的原因,爲什麼你不使用數據庫呢?文本文件非常有用。 –
也許指針不在正確的位置。測試它。移動'fclose()'下的'if($ repl ..)'行並使用if($ repl ..)file_put_contents('myfile.tmp','$ result \ n',FILE_APPEND);' – JustOnUnderMillions
do你的意思是,當你只運行一次這個腳本時,或者只有當你使用同一個文件運行多次時,它纔會繼續添加它?如果第二種情況,也許它可能是新行字符不被識別?在手冊中推薦使用'wb'而不是''w'帶'fopen'來實現可移植性和新的字符串。 – Kaddath