如何检测最后有附加文本的URL?

时间:2012-05-21 07:43:37

标签: php

我目前正在设计一个使用此网站的网站:<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>

6 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

尝试echo $_GET['dir'];

EDIT 试过这个?

$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 .... 
   }
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我很确定preg_match_all返回一个int。如果这是完整的代码,它根本不起作用。是的,请使用类似$_SERVER['PHP_SELF']的内容。你也应该考虑使用一些更好的网址来避免这种情况。

答案 4 :(得分: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>

答案 5 :(得分:0)

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

然后这个

$currentpage = basename(__FILE__);

只会给你 page.php

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

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

会为您提供页面