在 PHP 開發中,處理檔案路徑是常見需求。無論是建構上傳路徑、讀取設定檔,還是記錄日誌,都需要從完整路徑中快速提取「檔名」或「所在目錄」。PHP 內建的 basename() 與 dirname() 正是為此設計的輕量級工具,無需正則表達式,即可精準拆解路徑。
suffix 參數,會自動移除副檔名(如 .php)。<?php
$fullPath = 'C:/wamp/php/php.ini';
// 取得檔名:php.ini
$fileName = basename($fullPath);
// 取得目錄:C:/wamp/php
$dirPath = dirname($fullPath);
echo "檔名:$fileName\n";
echo "目錄:$dirPath\n";
?>
<?php
$path = '/var/www/html/index.php';
echo basename($path, '.php'); // 輸出:index
?>
\ 時,建議先統一轉為正斜線 /,或使用 DIRECTORY_SEPARATOR 常數以確保跨平台相容。/home/user/),basename() 會回傳空字串,dirname() 則回傳上一層目錄。搭配 pathinfo() 可一次取得完整資訊(dirname、basename、extension、filename),程式碼更簡潔:
<?php
$info = pathinfo('/etc/nginx/nginx.conf');
print_r($info);
/*
Array
(
[dirname] => /etc/nginx
[basename] => nginx.conf
[extension] => conf
[filename] => nginx
)
*/
?>
掌握這兩個函數,能讓檔案路徑操作更直觀、程式碼更易維護。