PHP文件名称带有查询参数的文件全部重命名

远昔 代码记录 2024-10-24 233 0

前言:今天远昔写一个一键扒站工具时,发现有些站点的调用的字体文件 带有 ?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);

评论

发表评论:

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论