0

我正在尝试使用 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. 获取 URL 并获取最后一部分,将其存储在$path变量中。
  2. 从内部查找myList具有匹配的 SRC 属性的链接$path
  3. .current为属性添加一个类。

我已经用这个对第一点进行了排序:

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

但我是 PHP 新手,所以我不确定如何处理第 2 点和第 3 点。请帮忙!

4

2 回答 2

0

“便宜”的方法如下:

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

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

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

于 2013-03-31T00:17:34.610 回答
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 最初设计的目的。如果上面的内容对您来说有点难看,您可能需要考虑使用模板系统。有很多流行和成熟的。

于 2013-03-31T00:21:46.013 回答