在Laravel框架中如何修改URL链接中的自定义文件名称?
Laravel修改URL指定文件名实现方案
你可以通过PHP原生URL解析能力配合Laravel自带的字符串处理能力完成需求,具体实现如下:
基础实现代码
<?php use Illuminate\Support\Str; // 填入你的原始URL $originalUrl = "https://www116.zippyshare.com/d/hljOkUHz/49620/Jungle.Cruise.2021.480p.WEB-DL.Hindi-Cam.English.MoviesVerse.Co.mkv"; // 解析URL获取各部分结构 $urlParts = parse_url($originalUrl); // 拆分路径为分段数组 $pathSegments = explode('/', trim($urlParts['path'], '/')); // 取出路径最后一段的原始文件名 $oldFileName = end($pathSegments); // 文件名替换:两种方案二选一 // 方案1:已知要替换的固定字符串为MoviesVerse.Co,直接替换 $newFileName = str_replace('MoviesVerse.Co', '{myWebsiteName}', $oldFileName); // 方案2:通用适配所有同格式mkv文件,不管原中间字段是什么都替换 // $newFileName = preg_replace('/\.[^.]+\.mkv$/', '.{myWebsiteName}.mkv', $oldFileName); // 替换路径分段中的文件名 $pathSegments[count($pathSegments) - 1] = $newFileName; // 拼接新路径 $newPath = implode('/', $pathSegments); // 拼接为完整的新URL $newUrl = $urlParts['scheme'] . '://' . $urlParts['host'] . '/' . $newPath;
通用封装方案
如果需要多处调用可以封装为公共辅助函数,放在app/Helpers目录下的公共函数文件中即可全局调用:
function replaceUrlLastSegment($originalUrl, $replaceText, $suffix = 'mkv') { $urlParts = parse_url($originalUrl); if (!$urlParts || !isset($urlParts['path'])) { return $originalUrl; } $pathSegments = explode('/', trim($urlParts['path'], '/')); $oldFileName = end($pathSegments); $newFileName = preg_replace('/\.[^.]+\.'.$suffix.'$/', '.' . $replaceText . '.'.$suffix, $oldFileName); $pathSegments[count($pathSegments) - 1] = $newFileName; $newPath = implode('/', $pathSegments); return $urlParts['scheme'] . '://' . $urlParts['host'] . '/' . $newPath; } // 调用示例 $targetUrl = replaceUrlLastSegment($originalUrl, '{myWebsiteName}');
内容的提问来源于stack exchange,提问作者Jhon
相关产品推荐
相关产品推荐

