gpt4 book ai didi

php - 如何通过行号从 CSV 文件中删除特定行?

转载 作者:行者123 更新时间:2023-12-04 15:39:48 26 4
gpt4 key购买 nike

我试图通过行号从 CSV 文件中删除一行,我在 URL 中将其作为参数获取。

我在这里看到了一些讨论,但主要是“通过存储在第一列的 id 删除一行”等等。我试图以与这些讨论中的其他人相同的方式来制作它,但它不起作用。我只是改变了条件。

if (isset($_GET['remove']))
{
$RowNo = $_GET['remove']; //getting row number
$row = 1;
if (($handle = fopen($FileName, "w+")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
//Here, I don't understand, why this condition does not work.
if ($row != $RowNo)
{
fputcsv($handle, $data, ';');
}
$row++;
}
fclose($handle);
}
}

我想,它也应该对我有用,BCS 只是条件改变了。但事实并非如此。它清除整个文件。你能帮我解决一下吗?

非常感谢您的任何建议。丹尼尔。

最佳答案

您可以使用 file() 将文件加载为行数组.

然后删除该行并将文件写回。

// read the file into an array    
$fileAsArray = file($FileName);

// the line to delete is the line number minus 1, because arrays begin at zero
$lineToDelete = $_GET['remove'] - 1;

// check if the line to delete is greater than the length of the file
if ($lineToDelete > sizeof($fileAsArray)) {
throw new Exception("Given line number was not found in file.");
}

//remove the line
unset($fileAsArray[$lineToDelete]);

// open the file for reading
if (!is_writable($fileName) || !$fp = fopen($fileName, 'w+')) {
// print an error
throw new Exception("Cannot open file ($fileName)");
}

// if $fp is valid
if ($fp) {
// write the array to the file
foreach ($fileAsArray as $line) {
fwrite($fp, $line);
}

// close the file
fclose($fp);
}

如果你有一个 unix 系统,你也可以使用 sed 命令:

exec("sed -e '{$lineToDelete}d' {$FileName}");

如果使用了用户输入,请记住清理命令参数: https://www.php.net/manual/de/function.escapeshellcmd.php

关于php - 如何通过行号从 CSV 文件中删除特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58181289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com