Php 删除文件夹中的所有文件和文件夹,但以结尾的文件和文件夹除外
我被要求创建一个cron作业,从文件夹中删除所有文件和文件夹(递归) 不包括一些文件扩展名 我有以下代码(我在网上找到): 将从指定的文件夹中删除任何内容, 但如前所述,我需要在中添加异常(不应删除所有“.php”文件) 请假定文件夹的结构如下:Php 删除文件夹中的所有文件和文件夹,但以结尾的文件和文件夹除外,php,recursion,delete-file,Php,Recursion,Delete File,我被要求创建一个cron作业,从文件夹中删除所有文件和文件夹(递归) 不包括一些文件扩展名 我有以下代码(我在网上找到): 将从指定的文件夹中删除任何内容, 但如前所述,我需要在中添加异常(不应删除所有“.php”文件) 请假定文件夹的结构如下: FOLDER1 FOLDER2 FOLDER3 FILE1.ZIP FILE2.ZIP DONOTDELETE1.PHP DONOTDELETE2.PHP 因此,除了php文件之外,所有内容都应该删除 有人能帮我吗?你能试试这个吗,如果($ext!=
FOLDER1
FOLDER2
FOLDER3
FILE1.ZIP
FILE2.ZIP
DONOTDELETE1.PHP
DONOTDELETE2.PHP
因此,除了php文件之外,所有内容都应该删除
有人能帮我吗?你能试试这个吗,如果($ext!='php'){
此函数已修改,请尝试使用此函数。这将删除除
*.php
或*.php
档案
更新2:
如果要保护具有特定扩展名的文件,可以这样做
rrmdir($your_directory, ".php");
//or
rrmdir($your_directory, ".pdf");
//or
rrmdir($your_directory, ".jpeg");
function rrmdir($dir, $protect_extension) {
if(!is_dir($dir))
{
return;
}
$len = strlen($protect_extension)*(-1);
$structure = glob(rtrim($dir, "/").'/*');
$rm_dir_flag = true;
if (is_array($structure))
{
foreach($structure as $file)
{
if (is_dir($file))
{
rrmdir($file, $protect_extension);
}
else if(is_file($file))
{
$ext = substr($file, $len);
if($ext==$protect_extension || $ext==strtoupper($protect_extension))
{
$rm_dir_flag = false;
}
else
{
unlink($file);
}
}
}
}
if($rm_dir_flag)
{
rmdir($dir);
}
}
是否确定在$file中具有文件的完整路径函数按原样工作,请查看我的编辑。我认为$file值不匹配请确保彼此相同认为$file值具有额外空间或字符有何区别?调用中没有文件扩展名异常?是否可以将异常添加到函数的调用中n?@Krish R如果你调用每个
rmdir($dir)
对于每个文件夹,如果该文件夹中有php文件,会发生什么?我发布的函数将删除文件夹中的所有内容。包括php文件。@Dementric请参阅我对@krish r的评论answer@Dementic注释这里你想说什么函数应该有一个参数到'exption files'。我猜因为你你没有验证文件夹是否存在,该功能在不存在的目录上失败。让我们
function rrmdir($dir) {
$structure = glob(rtrim($dir, "/").'/*');
if (is_array($structure)) {
foreach($structure as $file) {
if (is_dir($file)){
rrmdir($file);
}elseif(is_file($file)){
$info = pathinfo($file);
$ext = strtolower($info['extension']);
if($ext!='php'){
unlink($file);
}
}
}
}
rmdir($dir);
}
function rrmdir($dir) {
$structure = glob(rtrim($dir, "/").'/*');
$rm_dir_flag = true;
if (is_array($structure))
{
foreach($structure as $file)
{
if (is_dir($file))
{
rrmdir($file);
}
else if(is_file($file))
{
$ext = substr($file, -4);
if($ext==".php" || $ext==".PHP")
{
$rm_dir_flag = false;
}
else
{
unlink($file);
}
}
}
}
if($rm_dir_flag)
{
rmdir($dir);
}
}
rrmdir($your_directory, ".php");
//or
rrmdir($your_directory, ".pdf");
//or
rrmdir($your_directory, ".jpeg");
function rrmdir($dir, $protect_extension) {
if(!is_dir($dir))
{
return;
}
$len = strlen($protect_extension)*(-1);
$structure = glob(rtrim($dir, "/").'/*');
$rm_dir_flag = true;
if (is_array($structure))
{
foreach($structure as $file)
{
if (is_dir($file))
{
rrmdir($file, $protect_extension);
}
else if(is_file($file))
{
$ext = substr($file, $len);
if($ext==$protect_extension || $ext==strtoupper($protect_extension))
{
$rm_dir_flag = false;
}
else
{
unlink($file);
}
}
}
}
if($rm_dir_flag)
{
rmdir($dir);
}
}