0

我目前正在设计一个使用这个的网站:<li class="current">.

我有一个脚本来检测它何时在所述页面上输出正确的类,但是,当在 gallery.php?dir=thedir 页面上时,它无法输出类!

这是我到目前为止所拥有的,这是行不通的......

$ispage = preg_match_all('gallery.php/\[(.+?)\]/s');

我会很感激有人能给我的任何信息:)。

完整代码:

<?php 
$ispage = preg_match_all('gallery.php/\[(.+?)\]/s'); 
$currentpage = $_SERVER['REQUEST_URI']; 
if ($ispage==$currentpage) { 
    echo '<li class="current">'; 
} else { 
    echo '<li>'; 
} 
?><a href="gallery.php">Photos</a></li>
4

6 回答 6

1

您不能将 $_SERVER['SCRIPT_NAME'] 或 $_SERVER['PHP_SELF'] 或 $_SERVER['REQUEST_URI'] 与 php 函数 strpos($haystack, $findme) 一起使用吗?它应该让你的生活变得轻松。

http://php.net/manual/en/function.strpos.php

于 2012-05-21T07:50:35.887 回答
0

如果我理解您的问题,您正在尝试访问查询字符串值

尝试 echo $_GET['dir'];

编辑试过这个吗?

$ispage = '/'.basename($_SERVER['PHP_SELF']).'?'.($_SERVER['QUERY_STRING']);
$curepage = $_SERVER['REQUEST_URI'];

我认为您需要定义一系列链接来解决您的问题

以便

$curpage = $_SERVER['REQUEST_URI'];

$links = array('/gallery.php?dir=thedir', '/home.php?dir=anotherdir');

foreach($links as $link) {
   $class = '';

   if($link == $curpage) {
     $class = 'class="current"';

     echo '<li '.$class.'>';
     .... rest of the code .... 
   }
}
于 2012-05-21T07:47:23.200 回答
0

似乎$_SERVER['PHP_SELF']是您需要的,它返回相对文件名,没有参数。看看这里:http ://www.php.net/manual/en/reserved.variables.server.php

于 2012-05-21T07:53:10.157 回答
0

我很确定 preg_match_all 返回一个 int。如果这是完整的代码,它将根本无法工作。是的,使用类似$_SERVER['PHP_SELF']. 此外,您应该考虑使用一些更好的 url 来避免这种情况。

于 2012-05-21T07:59:16.527 回答
0
 <?php

$currentpage = $_SERVER['REQUEST_URI'];; 
preg_match('/[^.]+\.[^.]+$/', $currentpage, $matches);
if ($matches[0] == "/gallery.php?dir=thedir") { 
    echo '<li class="current">'; 
} else { 
    echo '<li>'; 
} 
?><a href="gallery.php">Photos</a></li>
于 2012-05-21T08:04:59.220 回答
0

如果 URL 类似于: www.site.com/page.php ?q=foo

那么这个

$currentpage = basename(__FILE__);

只会给你page.php

另外,如果你这样称呼它:

$currentpage = basename(__FILE__,".php");

会给你页面

于 2012-05-21T08:19:27.963 回答