本程式無需資料庫、無需預先定義站點結構,單純解析 $_SERVER['REQUEST_URI'],自動產生類似「首頁 > 服務項目 > 家教中心」的麵包屑導航。支援自訂目錄名稱對應中文標籤,極適合靜態化程度高、目錄結構固定的中小型網站。
<?php
$d_label = array(
"service" => "有償服務",
"teach" => "家教中心",
"union" => "校園服務聯盟",
"job" => "學生兼職",
"free" => "信息庫"
);
$directory = $_SERVER['REQUEST_URI'];
// 移除查詢字串
if (($pos = strpos($directory, '?')) !== false) {
$directory = substr($directory, 0, $pos);
}
$d_komplettx = '';
while ($directory != '/' && $directory != '') {
$d_text = basename($directory);
// 目錄名對應中文標籤
if (isset($d_label[$d_text])) {
$d_text = $d_label[$d_text];
}
$d_link = $directory;
// 組裝導航片段(從最深層往根疊加)
$d_curx = "-><a href=\"" . htmlspecialchars($d_link) . "\">" . htmlspecialchars($d_text) . "</a>";
$d_komplettx = $d_curx . $d_komplettx;
$directory = dirname($directory);
}
// 輸出完整導航
echo "欄目導航:" . $d_komplettx;
?>
假設目前網址為 https://example.com/service/teach/intro.php
$directory = "/service/teach/intro.php" → basename = "intro.php"(無對應標籤)dirname → "/service/teach"basename = "teach" → 對應「家教中心」dirname → "/service"basename = "service" → 對應「有償服務」dirname → "/" 結束輸出結果:
欄目導航:->有償服務->家教中心->intro.php
| 需求 | 實作方向 |
|---|---|
| 排除副檔名 | $d_text = pathinfo($d_text, PATHINFO_FILENAME); |
| 首頁固定顯示「首頁」 | 迴圈結束後 $d_komplettx = "-><a href=\"/\">首頁</a>" . $d_komplettx; |
| 支援多語系 | $d_label 改從語系檔或資料庫讀取 |
| SEO 結構化資料 | 輸出 itemscope itemtype="https://schema.org/BreadcrumbList" 微資料 |
| 快取優化 | 將解析結果存入 APCu/Redis,Key 為 REQUEST_URI |
htmlspecialchars() 防 XSS。/~user/site/),需先移除基礎路徑前綴。REQUEST_URI 進行檔案系統操作(本程式僅做字串解析,風險較低)。這段不到 20 行的程式碼,以極低成本解決了中小型站點的導航問題。其核心思想——「約定優於配置,利用 URL 結構反映資訊架構」——正是 RESTful 設計與現代靜態站點生成器(如 Hugo、VitePress)的基礎哲學之一。