1

我想使用 url 突出显示当前选项卡

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

$gallerypageurl="http://www.domain.com/gallery/"; 
if ($gallerypageurl==$url){ echo "selected"; }else { echo "";} 

当 url 为http://www.domain.com/gallery/ 但我的画廊有分页时,这会突出显示画廊选项卡,所以当我转到第二页时,url 是http://www.domain.com/画廊/2/

这不会突出显示当前画廊选项卡,因为 $url ( http://www.domain.com/gallery/2/ ) 不等于 $gallerypageurl ( http://www.domain.com/gallery/ )。

如何只提取没有页码 /2/ 或 /3/ 的页面 url

4

4 回答 4

1

您可以使用(例如...)stristr

if (stristr($url, $gallerypageurl) !== false)
{
  // $gallerypageurl was found in $url
  echo "selected";
}
于 2012-10-11T15:51:27.707 回答
1

你可以这样做

if (strpos($url, $gallerypageurl) !== false) {
    echo 'selected';
}
于 2012-10-11T15:53:33.220 回答
0

当部分的名称位于 URL 路径的第一段中时,此功能才有效。

function inSection($section, $url)
{
    $path = parse_url($url, PHP_URL_PATH);
    if(preg_match('@^/([^/]+)/?@', $path, $matches)) {
        return $matches[1] === $section;
    }
    return false;
}

echo inSection('gallery', 'http://www.domain.com/gallery/2/')
     ? 'selected' : '';
于 2012-10-11T15:57:46.233 回答
0

您可以使用explode函数将请求 uri 拆分为数组,然后检查数组键是否是您需要的:

    $uri = 'http://www.domain.com/gallery/2';
    $parts = explode('/', $uri);
    echo 'gallery' === $parts[3] ? 'selected' : '';

之前调用array_shift两次,跳过http和域名并从 1 开始索引数组。

顺便说一句,您应该$_SERVER在进一步处理之前对密钥进行消毒。

于 2012-10-11T15:59:14.770 回答