You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP获取URL锚点值?实现对应链接文字颜色切换

如何获取URL锚点并修改对应链接颜色

首先得明确一个关键点:锚点(#后面的部分)是浏览器端的内容,不会被发送到服务器,所以PHP作为服务器端语言,没办法直接从原始请求里拿到这个值。不过我们有两种可行的解决方案,分别适合不同场景:


方案一:用JavaScript(前端处理,推荐)

这是最直接的方式,因为锚点本来就是浏览器负责处理的,用JS可以轻松获取并修改样式。

步骤如下:

  1. 给需要高亮的链接统一加一个通用类,方便选择
  2. 页面加载时获取当前URL的锚点
  3. 找到对应href匹配锚点的a标签,添加一个高亮类
  4. 用CSS定义高亮类的颜色

示例代码:

先修改你的HTML,给链接加一个通用类比如nav-link:

<div class="col-sm-3 col-12">
  <div class="row">
    <div class="col-12"><a class="nav-link" href="#Distinctions">Distinctions</a></div>
    <div class="col-12"><a class="nav-link" href="#Presse">Presse</a></div>
    <div class="col-12"><a class="nav-link" href="#Expositions">Expositions</a></div>
    <div class="col-12"><a class="nav-link" href="#Conférences">Conférences</a><br/><br/></div>
  </div>
</div>

再添加JS和CSS实现高亮:

<style>
  .nav-link.active {
    color: #ff0000; /* 这里设置你想要的高亮颜色 */
  }
</style>

<script>
  // 页面加载完成后执行
  document.addEventListener('DOMContentLoaded', function() {
    // 获取当前锚点(去掉开头的#)
    const currentAnchor = window.location.hash.slice(1);
    
    if (currentAnchor) {
      // 找到对应href的链接
      const targetLink = document.querySelector(`a.nav-link[href="#${currentAnchor}"]`);
      
      if (targetLink) {
        // 添加高亮类
        targetLink.classList.add('active');
      }
    }
  });
</script>

方案二:用PHP(服务器端处理,需额外传递参数)

如果一定要用PHP实现,你需要把锚点的值通过GET参数的方式传递给服务器(因为浏览器不会自动传锚点)。比如把URL改成:http://localhost/website/?date=2019&anchor=Presse

然后PHP可以通过$_GET['anchor']获取这个值,再给对应链接添加高亮类。

示例代码:

<?php
// 获取传递过来的anchor参数
$currentAnchor = isset($_GET['anchor']) ? $_GET['anchor'] : '';

// 定义函数判断是否添加active类
function getActiveClass($anchor) {
  global $currentAnchor;
  return $anchor === $currentAnchor ? 'active' : '';
}
?>

<div class="col-sm-3 col-12">
  <div class="row">
    <div class="col-12"><a class="<?php echo getActiveClass('Distinctions'); ?>" href="#Distinctions">Distinctions</a></div>
    <div class="col-12"><a class="<?php echo getActiveClass('Presse'); ?>" href="#Presse">Presse</a></div>
    <div class="col-12"><a class="<?php echo getActiveClass('Expositions'); ?>" href="#Expositions">Expositions</a></div>
    <div class="col-12"><a class="<?php echo getActiveClass('Conférences'); ?>" href="#Conférences">Conférences</a><br/><br/></div>
  </div>
</div>

<style>
  .active {
    color: #ff0000; /* 高亮颜色 */
  }
</style>

注意这种方法需要用户访问的URL里带有anchor参数,或者你可以通过JS把锚点值发送给服务器(比如AJAX或跳转),但相比纯JS方案会更复杂。


总结一下,优先推荐用JavaScript方案,因为它更贴合锚点的工作机制,不需要额外修改URL或者服务器逻辑。

内容的提问来源于stack exchange,提问作者LucB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:35:59