2015-03-13 156 views
1

例如,我有幾排的學生信息幾個記錄:如何在php中修改或刪除一行文本文件?

AbuBaka Male 
MaryLu Female 
WongAhKao Male 

如果我想刪除該文件中的MaryLu Female紀錄,併成爲:

AbuBaka Male 
WongAhKao Male 

如何做到這一點?如果我使用WW+,則所有數據都將被擦除。

+1

爲什麼神的名字是你把它們保存在一個文本文件?我們有這種東西的數據庫。 – 2015-03-13 15:19:00

+2

將文件讀入數組,對數組進行更改,覆蓋文件。 – Burki 2015-03-13 15:47:01

回答

0

嘗試這樣的:

的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 
+0

@AyYong你有什麼進展? – 2015-04-07 18:08:26

1

因爲只有值,你可以使用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中)旨在規避在將數據存儲到文本文件時遇到的問題。

但是由於我不知道你的用例,這只是一個警告字,也許你的用例在文本文件中存儲名字是完全正確的。 :)