針對圖片網址(含完整 URL 與相對路徑)進行解析,提取基礎域名、目錄路徑、檔名等結構化資訊,適用於採集程式、圖片處理管線等場景。
$imgurl = 'https://files.jb51.net/file_images/article/201408/201408232212306.png'; $imgurl_dir = '/img/2014/07/02/14520384.gif'; var_dump(url_set_value($imgurl)); var_dump(url_set_value($imgurl_dir));
// 完整 URL
array(4) {
["base_url"]=> string(14) "files.jb51.net"
["img_dir_path"]=> string(27) "/file_images/article/201408"
["img_path"]=> string(19) "201408232212306.png"
["img_ful_path"]=> string(46) "/file_images/article/201408201408232212306.png"
}
// 相對路徑
array(3) {
["img_dir_path"]=> string(15) "/img/2014/07/02"
["img_path"]=> string(12) "14520384.gif"
["img_ful_path"]=> string(27) "/img/2014/07/0214520384.gif"
}
原版手動切割字串較脆弱,建議改用 PHP 內建函式:
function parse_image_url($url) {
$parsed = parse_url($url);
$path = $parsed['path'] ?? $url; // 相對路徑無 scheme,parse_url 會失敗
// 若 parse_url 失敗(相對路徑),直接用 pathinfo
if (!isset($parsed['host'])) {
return [
'base_url' => '',
'img_dir_path' => dirname($path),
'img_path' => basename($path),
'img_ful_path' => $path,
];
}
return [
'base_url' => $parsed['host'],
'img_dir_path' => dirname($path),
'img_path' => basename($path),
'img_ful_path' => $path,
];
}
內建函式處理邊界情況(查詢字串、片段識別碼、Windows 路徑分隔符)更健全,建議生產環境採用。