[英]Replace a particular line in a text file using php?
我有一個文本文件,它將lastname, first name, address, state, etc
為帶有|
的字符串 分隔符和單獨行上的每條記錄。
我有一個部分,我需要將每條記錄存儲在一個新的行上,並且它的工作正常; 但是,現在我需要能夠返回並更新特定行上的名稱或地址,我無法讓它工作。
這個如何使用php替換文本文件中的特定行? 在這里幫助了我,但我還沒到那兒。 這會覆蓋整個文件而丟失記錄。 任何幫助表示贊賞!
經過一些編輯似乎現在正在運作。 我正在調試以查看是否有任何錯誤。
$string= implode('|',$contact);
$reading = fopen('contacts.txt', 'r');
$writing = fopen('contacts.tmp', 'w');
$replaced = false;
while (!feof($reading)) {
$line = fgets($reading);
if(stripos($line, $lname) !== FALSE) {
if(stripos($line, $fname) !== FALSE) {
$line = "$string";
$replaced = true;
}
}
fwrite($writing, "$line");
//fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced)
{
rename('contacts.tmp', 'contacts.txt');
} else {
unlink('contacts.tmp');
}
看來你有一個csv格式的文件。 PHP可以使用fgetcsv()來處理這個問題http://php.net/manual/de/function.fgetcsv.php
if (($handle = fopen("contacts.txt", "r")) !== FALSE) {
$data = fgetcsv($handle, 1000, '|')
/* manipulate $data array here */
}
fclose($handle);
所以你得到一個可以操作的數組。 在此之后,您可以使用fputcsv http://www.php.net/manual/de/function.fputcsv.php保存文件。
$fp = fopen('contacts.tmp', 'w');
foreach ($data as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
那么,在Asad的評論之后,還有另一個簡單的答案。 只需在附加模式http://de3.php.net/manual/en/function.fopen.php中打開文件:
$writing = fopen('contacts.tmp', 'a');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.