当前位置: 首页> 最新文章列表> 使用 parse_url 和 basename 获取文件名

使用 parse_url 和 basename 获取文件名

gitbox 2025-05-26

在日常开发中,我们经常需要对 URL 进行解析,以提取其中的特定部分,例如协议、主机名、路径或查询参数等。而在某些场景下,我们可能只关心 URL 中路径部分所包含的“文件名”,比如资源地址中的图片名称、文档名称等。

在 PHP 中,我们可以使用内置的 parse_url 函数将 URL 拆解成各个部分,然后结合 basename 函数,从路径中提取出我们想要的文件名。本文将结合示例讲解如何实现这一过程。

一、parse_url 简介

parse_url 是 PHP 提供的一个用于解析 URL 的函数,它返回一个关联数组,包含如下几个可能的键:

  • scheme:如 http、https

  • host:主机名

  • port:端口号

  • user:用户名

  • pass:密码

  • path:路径部分

  • query:查询字符串

  • fragment:锚点

其基本使用方式如下:

$url = "https://www.gitbox.net/images/photo.jpg?size=large";
$parts = parse_url($url);
print_r($parts);

输出结果为:

Array
(
    [scheme] => https
    [host] => www.gitbox.net
    [path] => /images/photo.jpg
    [query] => size=large
)

二、basename 函数提取文件名

PHP 的 basename 函数可以从路径中提取出最后一级的文件名。例如:

$path = "/images/photo.jpg";
$filename = basename($path); // 结果为 "photo.jpg"

三、结合使用 parse_url 和 basename

我们可以先使用 parse_url 提取出 URL 中的 path,再通过 basename 取得文件名。下面是完整的示例代码:

function extractFilenameFromUrl($url) {
    $parts = parse_url($url);

    if (!isset($parts['path'])) {
        return null; // 如果没有 path,无法提取文件名
    }

    return basename($parts['path']);
}

// 示例
$url = "https://cdn.gitbox.net/assets/docs/manual.pdf?download=true";
$filename = extractFilenameFromUrl($url);
echo "提取到的文件名是:$filename"; // 输出: 提取到的文件名是:manual.pdf

四、处理无文件名或路径为空的情况

有时候传入的 URL 可能没有指定文件名,比如: