如何从文件名创建文件夹并在PHP中移动它?

时间:2017-09-01 15:02:25

标签: php file directory

假设我的文件目录中包含6个文件的文件:

File|-> Pic_Pic1.jpg
    |-> Pic_Pic2.jpg
    |-> Pic_Pic3.jpg
    |-> Img_Img1.jpg
    |-> Img_Img2.jpg
    |-> Img_Img3.jpg

Here FolderName_FileName.jpg

现在我想要从文件名创建文件夹的PHP脚本并将其移动到正确的位置..

这就是我想要的

File|-> Pic|-> Pic_Pic1.jpg
    |      |-> Pic_Pic2.jpg
    |      |-> Pic_Pic3.jpg
    |-> Img|-> Img_Img1.jpg
           |-> Img_Img2.jpg
           |-> Img_Img3.jpg




<?php
    define('START_DIR', 'rec');
    define('DEST_DIR', 'rename');
    define('SEPARATOR', '\\');

    function firstStage() {
        $d = dir(START_DIR);
        while (false !== ($entry = $d->read())) {
            if($entry != '.' && $entry != '..')
                secondStage($entry);
        }
        $d->close();
    }

    function secondStage($prefix) {
        $d = dir(START_DIR . SEPARATOR . $prefix);
        while (false !== ($entry = $d->read())) {
            if($entry != '.' && $entry != '..')
                rename(START_DIR . SEPARATOR . $prefix . SEPARATOR . $entry, DEST_DIR . SEPARATOR . $prefix . '_' . $entry);
        }
        $d->close();
    }

    firstStage();
?>

1 个答案:

答案 0 :(得分:0)

你可能正在寻找类似的东西。

<?php
define('START_DIR', 'rec');

foreach (glob(START_DIR . DIRECTORY_SEPARATOR . '/*.jpg') as $file) {
    list(,$filename) = explode('/', $file);
    list($destination, ) = explode('_', $filename);
    $newdir = START_DIR . DIRECTORY_SEPARATOR .$destination;
    if(!@mkdir($newdir) && !is_dir($newdir) ) {
        throw new Exception('Cannot create new directory', 0755);
    }
    rename($file, $newdir . DIRECTORY_SEPARATOR . $filename);
}
?>