PHP:从文件夹中的第一个文件中获取内容,然后将其删除


PHP: get content from first file in folder and then delete it

使用PHP,我想从文件夹中的第一个文件中获取内容,当加载内容时,删除该文件。这是我所拥有的:

$a = opendir('./');
while (false !== ($entry = readdir($a))) {
    if($entry != '.' && $entry != '..') {
        echo $entry = file_get_contents('./'.$entry.'', FILE_USE_INCLUDE_PATH);
        break; // only need the first file
        }
    }

上面的代码加载文件夹中的第一个文件,我可以使用类似的东西成功删除它

unlink("temp.txt");

因此不存在拒绝权限的错误。但我需要做的是按其变量名删除文件(因为每个文件名都不同)。令我惊讶的是,unlink("$entry");或类似的东西不允许我删除它,而是在该文件内容的前几行显示警告。如果我回显$entry,它会正确显示temp.txt。有人能启发我吗?我在这里错过了什么?

可选(非)相关问题:如果我有像1.txt、2.txt、3.txt、10.txt这样的数字文件……有没有办法修改上面的代码,使其不加载像1,10,2,3这样的文件。。。,而是像1,2,3,10…?)

更新:有效的更新代码(供将来参考):

$a = opendir('./');
while (false !== ($entry = readdir($a))) {
    if($entry != '.' && $entry != '..') {
        echo $b = file_get_contents('./'.$entry.'', FILE_USE_INCLUDE_PATH);
        break; // only need the first file
        }
    } 
unlink("./$entry");

第一个问题是用文件内容覆盖$entry,因此在尝试删除文件时文件名不再有效(用文件内容解释错误)。

其次,因为您使用的是FILE_USE_INCLUDE_PATH,所以您不知道文件的确切位置,并且unlink解析与当前工作目录相关,而当前工作目录很可能不是$a

使用unlink($a.'/'.$entry),你会没事的。

至于不相关的问题——使用scandir获取文件夹中的所有文件,然后将natsort应用于生成的数组,以"自然排序算法"进行排序。请记住,目录列表总是列出文件夹...,您必须手动检测并跳过或删除它们。