當前位置: 首頁> 最新文章列表> 如何使用PHP 的parse_url 函數結合basename 來提取URL 中的文件名?

如何使用PHP 的parse_url 函數結合basename 來提取URL 中的文件名?

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 可能沒有指定文件名,比如: