如何检测末尾有附加文本的 URL


How to detect a URL which has additional text at the end?

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

我有一个脚本来检测它何时在所述页面上输出正确的类,但是,在图库.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>
你不能使用 $_SERVER['SCRIPT_NAME'] 或 $_SERVER['PHP_SELF']

或 $_SERVER['REQUEST_URI'] 以及 php 函数 strpos($haystack, $findme(?它应该让你的生活变得轻松。

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

似乎

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

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

试试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 .... 
   }
}
 <?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>

如果URL是这样的:www.site.com/page.php?q=foo

那么这个

$currentpage = basename(__FILE__);

只会给你页面.php

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

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

会给你页面

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