且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用php重命名文件夹中的所有文件

更新时间:2023-02-03 22:50:59

以下是简单的解决方案:

PHP代码:

// your folder name, here I am using templates in root
$directory = 'templates/';
foreach (glob($directory."*.html") as $filename) {
    $file = realpath($filename);
    rename($file, str_replace(".html",".php",$file));
}

以上代码将转换 .php

中的所有 .html 文件

new php programmer here. I have been trying to rename all the files in a folder by replacing the extension.

The code I'm using is from the answer to a similar question on SO.

if ($handle = opendir('/public_html/testfolder/')) {
while (false !== ($fileName = readdir($handle))) {
    $newName = str_replace(".php",".html",$fileName);
    rename($fileName, $newName);
}
closedir($handle);

}

I get no errors when running the code, but no changes are made to the filenames.

Any insight on why this isn't working? My permission settings should allow it.

Thanks in advance.

EDIT: I get a blank page when checking the return value of rename(), now trying something with glob() which might be a better option than opendir...?

EDIT 2: With the 2nd code snippet below, I can print the contents of $newfiles. So the array exists, but the str_replace + rename() snippet fails to change the filename.

$files = glob('testfolder/*');


foreach($files as $newfiles) 
    {

    //This code doesn't work:

            $change = str_replace('php','html',$newfiles);
    rename($newfiles,$change);

           // But printing $newfiles works fine
           print_r($newfiles);
}

Here is the simple solution:

PHP Code:

// your folder name, here I am using templates in root
$directory = 'templates/';
foreach (glob($directory."*.html") as $filename) {
    $file = realpath($filename);
    rename($file, str_replace(".html",".php",$file));
}

Above code will convert all .html file in .php