Php 将文件夹分组到另一个文件夹中

Php 将文件夹分组到另一个文件夹中,php,Php,我将图像内容存储在如下文件夹中: Contents --> Content1 --> Content2543 --> Content3654 --> Content4456 --> Content5456 --> Content6765 --> Content9565 以此类推,直到内容700k 我需要更改内容的存储方式,以便同一文件夹中的文件夹不超过1000个,因此我决定将内容移动到另一个文件夹中的某个范围内,例如,id介于1和1000之间的内容放入

我将图像内容存储在如下文件夹中:

Contents
--> Content1
--> Content2543
--> Content3654
--> Content4456
--> Content5456
--> Content6765
--> Content9565
以此类推,直到内容700k

我需要更改内容的存储方式,以便同一文件夹中的文件夹不超过1000个,因此我决定将内容移动到另一个文件夹中的某个范围内,例如,id介于1和1000之间的内容放入名为Contents1-1000的文件夹中

预期结果将是:

Contents
--> Contents1-1000
    --> Content1
--> Contents1001-2000
--> Contents2001-3000
    --> Content2543
--> Contents3001-4000
    --> Content3654
--> Contents4001-5000
    --> Content4456
--> Contents5001-6000
    --> Content5456
--> Contents6001-7000
    --> Content6765
--> Contents7001-8000
--> Contents8001-9000
--> Contents9001-10000
    --> Content9565
我知道如何将新内容导入此文件夹结构,但我不知道如何将当前内容添加到此结构,到目前为止,我有以下内容:

$directories = glob($_SERVER['DOCUMENT_ROOT'].'/contents/*' , GLOB_ONLYDIR);

foreach($directories as $dir) {
 rename(basename($dir), basename($dir));
}
但是我不知道如何迭代文件夹名称,以便内容26304进入文件夹26001-27000

感谢

$directories=glob($\u SERVER['DOCUMENT\u ROOT'../acuarelas/contenidos/*',glob\u ONLYDIR);
foreach($dir目录){
$id=basename($dir);
$alocator=楼层($id/1000);
$alocator=($alocator*1000)。“-”($alocator*1000)+1000);
回声$alocatordir.“/”$id.“
”; }
您可以尝试以下方法:

$directoryIterator = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . '/contents');

foreach ($directoryIterator as $fileInfo) {
    if ($fileInfo->isDot() || !$fileInfo->isDir()) {
        continue;
    }

    preg_match('/\d+$/', $fileInfo->getFilename(), $directoryNumber);

    $rangeMin = floor($directoryNumber[0] / 1000) * 1000 + 1;
    $range = array($rangeMin, $rangeMin + 999);

    $newPath = $fileInfo->getPath()
        . '/Contents'
        . implode('-', $range)
        . '/'
        . $fileInfo->getFilename();

    rename($fileInfo->getPathname(), $newPath);
}

PS:请注意,此代码未经测试,可能需要一些增强功能才能正常工作。

以下是如何为任何单个内容文件
$curFilename
执行此操作:

$curFilename = "Content26304";

preg_match('/[0-9]/', $curFilename, $matches, PREG_OFFSET_CAPTURE);

$id = substr($curFilename, $matches[0][1]);
$minFolder = (floor($id / 1000) * 1000) + 1;
$maxFolder = ($minFolder - 1) + 1000;
因此,您可以看到输出:

echo "File [$curFilename] should go to [$minFolder]-[$maxFolder]";
echo "File [$curFilename] should go to [$minFolder]-[$maxFolder]";