将特定类/id应用于菜单上的当前页面(PHP)

将特定类/id应用于菜单上的当前页面(PHP),php,menu,Php,Menu,我有这样的菜单: <div id="blahblah" style="blahblah"> <a href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> <a href="http://domain.com/folder/contacts"><img style="blahblah" src="blahb

我有这样的菜单:

<div id="blahblah" style="blahblah">
<a href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
<a href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
<a href="http://domain.com/folder/gallery"><img style="blahblah" src="blahblahblahblah"></a>
<a href="http://domain.com/folder/dontknow"><img style="blahblah" src="blahblahblahblah"></a>
</div>
<?php
function get_current($name) {
  if (strpos($_SERVER['REQUEST_URI'], $name) !== false)
    echo 'class="current"';
}
?>

<div id="blahblah" style="blahblah">
  <a <?php get_current('biography') ?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
  <a <?php get_current('contacts') ?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
  ...
  ...
</div>

我希望有一些东西可以自动将class=“current”添加到我当前所在的页面。链接(正如您在上面的代码中看到的)类似于domain.com/folder/传记或domain.com/folder/contacts,因此没有.php/.html等

我试过:

<div id="blahblah" style="blahblah">
<a <?php if (strpos($_SERVER['PHP_SELF'], 'biography')) echo 'class="current"';?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'contacts')) echo 'class="current"';?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
...
...
</div>

...
...

但它不起作用。。。strops的解决方案似乎可行,可能我做错了P

如果位置为0,则在PHP中计算结果将为FALSE。您应该特别检查返回值,即>=0。

而不是
strpos()
,您可以尝试以下方法:

<?php $current = basename($path, ".php"); ?>

<a href="blahblah"<?php if ($current == 'biographies') echo ' class="current"'; ?> />

你应该:

  • 使用
    !==错误
  • 使用
    $\u服务器['REQUEST\u URI']
    而不是
    $\u服务器['PHP\u SELF']
  • 将代码包装到函数中 大概是这样的:

    <div id="blahblah" style="blahblah">
    <a href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
    <a href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
    <a href="http://domain.com/folder/gallery"><img style="blahblah" src="blahblahblahblah"></a>
    <a href="http://domain.com/folder/dontknow"><img style="blahblah" src="blahblahblahblah"></a>
    </div>
    
    <?php
    function get_current($name) {
      if (strpos($_SERVER['REQUEST_URI'], $name) !== false)
        echo 'class="current"';
    }
    ?>
    
    <div id="blahblah" style="blahblah">
      <a <?php get_current('biography') ?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
      <a <?php get_current('contacts') ?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
      ...
      ...
    </div>
    
    
    ...
    ...
    
    请记住,strpos将返回位置,因此如果脚本名称为“传记.php”,并且您搜索“biorgraphy”,它将返回0,该值将计算为false。。。添加
    !==false
    到您的条件句…谢谢您的回复!;)不幸的是,这不起作用..:(另一个问题……)对于一个条目,我有“子条目”。有没有办法让多个页面为一个条目“提供”当前类?类似于:我不确定是否理解您的问题,但PHP支持多参数函数,例如:
    get_current('page1','page2','page3')
    。看见如果你用HTML代码创建一个新问题并解释你想要实现的目标,我可以给你详细的答案。给你:)