Summary: in this tutorial, you will learn how to rename a file in PHP by using the rename()
function.
Introduction to the PHP rename file function
To rename a file to the new one, you use the rename()
function:
rename ( string $oldname , string $newname , resource $context = ? ) : bool
Code language: PHP (php)
The rename()
function has three parameters:
$oldname
is the name of the file that you want to rename.$newname
is the new name of the file.$context
is a valid context resource
The rename() function returns true if the $oldname file is renamed successfully or false otherwise.
If the $oldname
file and $newname
has a different directory, the rename()
function will move the file from the current directory to the new one and rename the file.
Note that in case the $newname
file already exists, the rename()
function will overwrite it by the $oldname
file.
PHP rename file examples
Let’s take some examples of renaming a file in PHP
1) Simple PHP rename file example
The following example uses the rename()
function to rename the readme.txt
file to readme_v2.txt
file in the same directory:
<?php
$oldname = 'readme.txt';
$newname = 'readme_v2.txt';
if (rename($oldname, $newname)) {
$message = sprintf(
'The file %s was renamed to %s successfully!',
$oldname,
$newname
);
} else {
$message = sprintf(
'There was an error renaming file %s',
$oldname
);
}
echo $message;
Code language: HTML, XML (xml)
2) Rename and move the file
The following example uses the rename()
function to move the readme.txt
to the public
directory and rename it to readme_v3.txt
:
<?php
$oldname = 'readme.txt';
$newname = 'public/readme_v3.txt';
if (rename($oldname, $newname)) {
$message = sprintf(
'The file %s was renamed to %s successfully!',
$oldname,
$newname
);
} else {
$message = sprintf(
'There was an error renaming file %s',
$oldname
);
}
echo $message;
Code language: HTML, XML (xml)
3) PHP rename multiple files helper function
The following example defines a function that allows you to rename multiple files. The rename_files()
function renames the files that match a pattern. It replaces a substring in the filenames with a new string.
<?php
function rename_files(string $pattern, string $search, string $replace) : array
{
$paths = glob($pattern);
$results = [];
foreach ($paths as $path) {
// check if the pathname is a file
if (!is_file($path)) {
$results[$path] = false;
continue;
}
// get the dir and filename
$dirname = dirname($path);
$filename = basename($path);
// replace $search by $replace in the filename
$new_path = $dirname . '/' . str_replace($search, $replace, $filename);
// check if the new file exists
if (file_exists($new_path)) {
$results[$path] = false;
continue;
}
// rename the file
$results[$path] = rename($path, $new_path);
}
return $results;
}
Code language: HTML, XML (xml)
How it works.
- First, get the paths that match a pattern by using the
glob()
function. Theglob()
function returns an array of files (or directories) that match a pattern. - Second, for each path, check if it is a file before renaming.
The following uses the replace_files()
function to rename all the *.md
files in the pages
directory to the *.html
files:
<?php
rename_files('pages/*.md', '.md', '.html');
Code language: HTML, XML (xml)
Summary
- Use the PHP
rename()
file function to rename a file.