前言:今天远昔写一个一键扒站工具时,发现有些站点的调用的字体文件 带有 ?v=112 这样的查询参数,想要祛除掉,于是便有了以下代码
效果:遍历一个文件夹下的所有文件,并重命名文件名中的查询参数(如 ?v=256)。以下是一个示例代码,展示了如何递归遍历文件夹,并处理文件名中的查询参数。
function renameFilesWithQueryParams($directory) { //获取目录中的所有文件和子目录
$items = scandir($directory);
foreach ($items as $item) {
// 跳过当前目录和上级目录
if ($item === '.' || $item === '..'){ continue;}
// 获取项目的完整路径
$path = $directory . '/' . $item;
// 检查是否是文件
if (is_file($path)) {
// 处理文件名中的查询参数
renameFileWithQueryParam($path);
} elseif (is_dir($path)) {
// 递归处理子目录
renameFilesWithQueryParams($path);
}
}
}
function renameFileWithQueryParam($filePath) {
// 获取文件名和目录路径
$directory = dirname($filePath);
$fileName = basename($filePath);
// 检查文件名是否包含查询参数
if (strpos($fileName, '?') !== false) {
// 去掉查询参数
$newFileName = preg_replace('/\?.*/', '', $fileName);
// 构建新的文件路径
$newFilePath = $directory . '/' . $newFileName;
// 重命名文件
if (rename($filePath, $newFilePath)) {
//echo "重命名文件: $filePath 到 $newFilePath\n";
} else {
echo "无法重命名文件: $filePath\n";
}
}
}
// 示例用法$directory = 'path/to/your/directory';
// 替换为你的目录路径renameFilesWithQueryParams($directory);
评论
发表评论: