例如,我有幾排的學生信息幾個記錄:如何在php中修改或刪除一行文本文件?
AbuBaka Male
MaryLu Female
WongAhKao Male
如果我想刪除該文件中的MaryLu Female
紀錄,併成爲:
AbuBaka Male
WongAhKao Male
如何做到這一點?如果我使用W
或W+
,則所有數據都將被擦除。
例如,我有幾排的學生信息幾個記錄:如何在php中修改或刪除一行文本文件?
AbuBaka Male
MaryLu Female
WongAhKao Male
如果我想刪除該文件中的MaryLu Female
紀錄,併成爲:
AbuBaka Male
WongAhKao Male
如何做到這一點?如果我使用W
或W+
,則所有數據都將被擦除。
嘗試這樣的:
的1.txt裏面有:
AbuBaka Male
MaryLu Female
WongAhKao Male
PHP代碼:
<?php
$delete = 'MaryLu Female';
$array = file('1.txt', FILE_IGNORE_NEW_LINES);
$id = array_search($delete, $array);
array_splice($array, $id, 1);
$string = implode("\n", $array);
file_put_contents('2.txt', $string);
?>
在2 .TXT您將看到:
AbuBaka Male
WongAhKao Male
@AyYong你有什麼進展? – 2015-04-07 18:08:26
因爲只有值,你可以使用file()。
例子:
<?php
// Read all lines from a file to array
$users = file('users.txt',FILE_IGNORE_NEW_LINES);
// Search for the array id of the line we want to be deleted
$idToDelete = array_search('MaryLu Female',$users);
// Check if we have a result
if($idToDelete !== false){
// If so, delete the array entry
unset($users[$idToDelete]);
}
// Finally, put the remaining entries back into the file,
// overwriting any existing content.
file_put_contents("users.txt",implode(PHP_EOL,$users));
但請注意這不是存儲在文本文件中的數據是個好主意。一個原因是一旦兩個用戶使用腳本(假設它運行在Web服務器上)那個保存最後勝利的人。
像MySQL,MariaDB或PostgreSQL甚至SQLite的數據庫管理系統(它是構建到php afaik中)旨在規避在將數據存儲到文本文件時遇到的問題。
但是由於我不知道你的用例,這只是一個警告字,也許你的用例在文本文件中存儲名字是完全正確的。 :)
爲什麼神的名字是你把它們保存在一個文本文件?我們有這種東西的數據庫。 – 2015-03-13 15:19:00
將文件讀入數組,對數組進行更改,覆蓋文件。 – Burki 2015-03-13 15:47:01