【问题标题】:Detecting page filename using php?使用php检测页面文件名?
【发布时间】:2011-01-12 18:14:12
【问题描述】:

我正在 Wordpress 模板上制作菜单,需要该菜单来检测当前页面并突出显示它。例如,我的菜单是:

<li><a href="index.php" class="current">Home</a></li>
<li><a href="about.php">About</a></li>

因此,如果用户在“关于”页面上,我希望该用户具有“class=current”。这怎么可能?我听说可以使用$_SERVER['PHP_SELF'] 吗?请感谢我对 php 编码的知识为零,所以请详细回复。

【问题讨论】:

    标签: php detect


    【解决方案1】:

    我用了一个像这个一样的小sn-p。如果您的访问者在about.php$basename 将等于about

    $basename = substr(strtolower(basename($_SERVER['PHP_SELF'])),0,strlen(basename($_SERVER['PHP_SELF']))-4);
    

    HTML 应该是这样的。

    <li><a href="index.php"<?php if ($basename == 'index') echo ' class="current"'; ?>>Home</a></li>
    <li><a href="about.php"<?php if ($basename == 'about') echo ' class="current"'; ?>>About</a></li>
    

    【讨论】:

    • 太好了,你能告诉我如何在 html 代码中使用 $basename 吗?正如我所提到的,我对 PHP 以及如何使用它的知识几乎为零。
    • 是的。你在那里有一对多的引号,但这很好:)
    • 好球!更新。对此问题 +1!
    • 使用 SCRIPT_NAME 代替 PHP_SELF 会更好吗,因为它只返回文件名?
    【解决方案2】:
    $myPage = $_SERVER['PHP_SELF'];
    <li><a href="index.php" class="<?echo ($myPage == 'index.php'?'current':'')?>">Home</a></li>
    <li><a href="about.php" class="<?echo ($myPage == 'about.php'?'current':'')?>">About</a></li>
    

    【讨论】:

      【解决方案3】:

      您可以使用以下形式:

      <li><a href="index.php"<?php if($_SERVER['PHP_SELF'] == 'index.php') echo ' class="current"'); ?>>Home</a></li>
      <li><a href="about.php"<?php if($_SERVER['PHP_SELF'] == 'about.php') echo ' class="current"'); ?>>About</a></li>
      

      也就是说,您可能希望将上述内容合并到一个函数中。

      无论如何,我建议您在继续之前阅读 PHP 手册的 getting started section - 这将是明智地花费时间。

      【讨论】:

      • 出于兴趣,如果您的示例有效,我为什么需要将其合并到函数中?
      • 'PHP_SELF'] == 'index.php' 也会检测到 index.php?random...的 URL?
      • @alexander 1. 您不需要将它包含在函数中,它只是更简洁,并为未来的任何改进提供了一个中心位置。 2. PHP_SELF 是当前执行脚本的文件名,所以它不会包含任何查询字符串 args。
      猜你喜欢
      • 2011-05-16
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多