说明
当目录里的文件名需要更改时,可以使用 PHP 的 函数将文件名更改为新的随机名称。可以使用 函数列出目录中的所有文件,然后使用 循环遍历每个文件,对文件名进行更改。
这个代码中,我们首先定义了目录的路径、需要更改的文件扩展名、新文件名的长度。然后我们使用 函数获取目录下所有指定扩展名的文件,使用 循环遍历每个文件,并且在每个循环中使用 函数获取文件扩展名,使用 函数生成新的随机文件名,使用 函数将文件重命名为新文件名。最后,我们定义了一个 函数,用于生成随机文件名。glob()
foreach
pathinfo()
generate_random_name()
rename()
generate_random_name()
示例代码
<?php
$dir_path = './bg/'; // 目录路径
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif']; // 需要更改的文件扩展名
$prefix_length = 10; // 新文件名的长度
$files = glob($dir_path . '/*.{'. implode(',', $allowed_ext) . '}', GLOB_BRACE); // 获取目录下所有指定扩展名的文件
foreach ($files as $file) {
$ext = pathinfo($file, PATHINFO_EXTENSION); // 获取文件扩展名
$new_name = generate_random_name($prefix_length) . '.' . $ext; // 生成新的随机文件名
$new_path = $dir_path . '/' . $new_name; // 生成新文件的路径
rename($file, $new_path); // 重命名文件
}
function generate_random_name($length) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$random_name = '';
for ($i = 0; $i < $length; $i++) {
$random_name .= $characters[rand(0, strlen($characters) - 1)];
}
return $random_name;
}
?>
优化代码
使用该函数获取文件扩展名,并使用函数为每个文件生成随机前缀。然后,它使用该函数重命名文件,如果重命名成功,则输出成功消息,如果重命名不成功,则输出错误消息
- 指定目录路径为
$dir_path
。 - 使用
scandir()
函数获取目录下的所有文件。 - 循环处理每个文件,跳过 和
.
..
两个特殊文件。 - 使用
md5()
函数生成随机字符串,并使用substr()
函数截取前10位字符作为新的文件名。 - 使用
rename()
函数将文件重命名。 - 根据重命名结果输出相应信息。
<?php
$dir_path = "./bg/bg/"; // 指定目录路径
$files = scandir($dir_path); // 获取目录下所有文件
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
$extension = pathinfo($file, PATHINFO_EXTENSION);
$new_filename = substr(md5(uniqid(mt_rand(), true)), 0, 10) . '.' . $extension;
$old_file_path = $dir_path . $file;
$new_file_path = $dir_path . $new_filename;
if (rename($old_file_path, $new_file_path)) {
echo "文件 " . $file . " 重命名为 " . $new_filename . "<br>";
} else {
echo "重命名文件 " . $file . " 失败!<br>";
}
}
}
?>
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容