如何在php中修改或删除一行文本文件?

时间:2015-03-13 15:17:43

标签: php algorithm file

例如,我几行记录的学生信息很少:

AbuBaka Male
MaryLu Female
WongAhKao Male

如果我想删除文件中的MaryLu Female记录,并变为:

AbuBaka Male
WongAhKao Male

怎么做?如果我使用WW+,则所有数据都将被删除。

2 个答案:

答案 0 :(得分: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),旨在规避在文本文件中存储数据时遇到的问题。

但由于我不知道你的用例,这只是一个警告,也许你的用例非常适合在文本文件中存储名称。 :)

答案 1 :(得分: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