按URL查找链接元素并使用PHP添加类

时间:2013-03-31 00:15:41

标签: php

我正在尝试使用PHP向当前项添加一个类。我有一个静态导航,如下所示:

<ul id="myList">
  <li><a href="page1.php">Page One</a></li>
  <li><a href="page2.php">Page Two</a></li>
  <li><a href="page3.php">Page Three</a></li>
</ul>

我想遵循的逻辑是:

  1. 抓取网址并获取最后一部分,将其存储在$path变量中。
  2. myList内找到具有与$path匹配的SRC属性的链接
  3. 在属性中添加.current类。
  4. 我已经用这个来排序第一点:

    $path = basename( parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) );
    

    但我是PHP的新手,所以我不知道怎么去点2&amp;请帮忙!

2 个答案:

答案 0 :(得分:0)

“便宜”的方式如下:

// assuming $html is your code
$html = str_replace($path,$path.'" class="current',$html);

正确的方法是使用HTML解析器。

正确的方法是在生成源代码时将其放在首位。

答案 1 :(得分:0)

只需将您的“静态”导航更新为动态导航。

$links = array(
    array('link' => 'page1.php', 'text' => 'Page One'),
    array('link' => 'page2.php', 'text' => 'Page Two'),
    array('link' => 'page3.php', 'text' => 'Page Three')
);
$path = basename( parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) );
echo '<ul id="myList">'
foreach ($links as $link) {
    $class = '';
    if ($link['link'] == $path) {
        $class = 'current';
    }
    echo "<li><a href=\"$link[link]\" class=\"$class\">$link[text]</a></li>";
}
echo "</ul>";

这种情况实际上是PHP最初设计的目的。如果上面看起来有点难看,您可能需要考虑使用模板系统。那里有很多流行的和成熟的。