【问题标题】:PHP Breadcrumb Generates Empty LinkPHP面包屑生成空链接
【发布时间】:2016-10-11 13:45:42
【问题描述】:

我正在使用这个简单的代码来生成面包屑:

  <ul class="breadcrumb">
<?php
  $crumbs = explode("/",$_SERVER["REQUEST_URI"]);
   foreach($crumbs as $crumb){
    echo '   <li>';
    echo '<a href="'.$crumb.'">';
    echo ucfirst(str_replace(array(".php","_"),array(""," "),$crumb) . '');
    echo '</a>';
    echo '<span class="divider">/</span></li>' . PHP_EOL;
   }
?>
  </ul>

现在我的网址是http://example.com/gallery.php

由于某种原因,此脚本正在为gallery.php 生成一个空锚标记和一个锚标记。

谁能告诉我为什么会生成一个空的锚标记?

实际输出为:

  <ul class="breadcrumb">
   <li><a href=""></a><span class="divider">/</span></li>
   <li><a href="gallery.php">Gallery</a><span class="divider">/</span></li>
  </ul>

这个例子来自:PHP Simple dynamic breadcrumb

【问题讨论】:

  • 因为$_SERVER["REQUEST_URI"]/ 开头,所以在爆炸时总是至少得到两个数组元素。试试这个:explode("/", trim($_SERVER["REQUEST_URI"], '/'));

标签: php


【解决方案1】:

因为explode("/", "/asd/ddd") 返回["", "asd", "ddd"]

添加 if 语句即可。

foreach($crumbs as $crumb){
    if(!$crumb) continue;
    echo '   <li>';
    echo '<a href="'.$crumb.'">';
    echo ucfirst(str_replace(array(".php","_"),array(""," "),$crumb) . '');
    echo '</a>';
    echo '<span class="divider">/</span></li>' . PHP_EOL;
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多