根據 $_SERVER['REQUEST_URI'] 自動生成麵包屑導航,如:首頁 > 目錄1 > 目錄2 > 當前頁。支援自定義目錄顯示名稱映射。
<?php
// 導航條配置:目錄名 => 顯示名(可選)
$label = array(
"目錄1" => "導航名1",
"目錄2" => "導航名2",
"目錄3" => "導航名3"
);
$ur1 = $REQUEST_URI; // 獲取當前請求 URI
$komplettx = "";
while ($ur1 != "") {
$text = basename($ur1); // 取文件/目錄名
if (isset($label[$text])) { // 若有自定義顯示名則替換
$text = $label[$text];
}
$link = $ur1;
$curx = " > <a href=\"$link\">$text</a>";
$komplettx = $curx . $komplettx; // 反向拼接,最終順序正確
$ur1 = dirname($ur1); // 遞歸向上一級目錄
}
echo $komplettx;
?>
basename() 取最末段(文件名或目錄名)$label 映射表,無則保持原名 > <a href="...">名稱</a>$komplettx = $curx . $komplettx 實現「由內向外」反向拼接,最終輸出順序為根→葉dirname() 遞歸截取父目錄,直到根目錄 "" 結束在頁面需顯示導航處 include 'nav.php'; 即可。
> <a href="">...</a>,建議特判根目錄輸出「首頁」parse_url($ur1, PHP_URL_PATH)htmlspecialchars($text) 防 XSSexplode('/', trim($path, '/')) 分割路徑,array_map 映射,implode 組裝<?php
function breadcrumb(array $labelMap = []): string {
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$parts = array_filter(explode('/', $path));
$crumbs = ['<a href="/">首頁</a>'];
$accum = '';
foreach ($parts as $part) {
$accum .= '/' . $part;
$name = isset($labelMap[$part]) ? $labelMap[$part] : ucfirst($part);
$crumbs[] = '<a href="' . htmlspecialchars($accum) . '">' . htmlspecialchars($name) . '</a>';
}
return implode(' > ', $crumbs);
}
echo breadcrumb(['dir1' => '產品中心', 'dir2' => '技術文檔']);
?>