首页 > 解决方案 > 面包屑菜单 PHP 生成额外的空白锚链接

问题描述

假设我有以下网址:

https://site.website/products/products-level-2

products-level-2我有一个面包屑英雄部分。我期待看到的是:

Products / Products Level 2

但是,以我目前的方法,我看到:

/ Products / Products Level 2 /

^^ 上面的 HTML 输出如下:

<!-- link 1 - not needed -->
<a class="crumbMenu" href="site.website"> </a>
<span class="slash">/</span> 

<!-- link 2 -->
<a class="crumbMenu" href="site.website//products">Products </a>
<span class="slash">/</span> 

<!-- link 3 -->
<a class="crumbMenu" href="site.website//products/products-level-2">Products Level 2</a>
<span class="slash">/</span>

<!-- link 4 - not needed -->
<a class="crumbMenu" href="site.website//products/products-level-2"> </a>
<span class="slash">/</span> 
  

以上有以下问题:

  1. 它正在输出空白/不需要的锚链接。
  2. 在href中,它输出双//(即site.website//products
  3. 我也不希望最后一项(即products level 2)成为链接(因为用户正在查看该页面上的面包屑)。
  4. 我不想/出现在面包屑的开头和结尾。

这是我目前的方法:

<?php
// 1. Get URL
$crumbs = explode("/",$_SERVER["REQUEST_URI"]);
$address = $_SERVER['HTTP_HOST'];

// 2. Strip extras
$build = '';
foreach($crumbs as $crumb){
    $build .= '/'.$crumb;
    $crumb = ucfirst(str_replace(array(".php","_"),array(""," "),$crumb) . ' ');
    echo
        "<a class='crumbMenu' href=".$address.$build.">".$crumb."</a> 
        <span class='slash'>/</span> ";
}
?>

标签: phphtmlbreadcrumbs

解决方案


要解决 1,2,4,只需删除前导和尾随斜杠。要解决 3,您需要做一个简单的 if:

// 1. Get URL
$crumbs = explode("/", trim($_SERVER["REQUEST_URI"], '/'));
$address = $_SERVER['HTTP_HOST'];

// 2. Strip extras
$build = '';
$lastKey = count($crumbs) - 1;

foreach($crumbs as $key => $crumb){
    $build .= '/'.$crumb;
    $crumb = ucfirst(str_replace(array(".php","_"),array(""," "),$crumb) . ' ');

    echo $key < $lastKey
        ? "<a class='crumbMenu' href=".$address.$build.">".$crumb."</a>
           <span class='slash'>/</span>"
        : $crumb;
}

演示:https ://3v4l.org/BqD7C


推荐阅读