在php中自定义请求URL

时间:2012-10-11 15:48:41

标签: php

我想使用网址突出显示当前标签

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

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

当网址为 http://www.domain.com/gallery/ 时,会突出显示图库标签 但我的画廊有一个分页,所以当我去第二页时,网址是 http://www.domain.com/gallery/2/

这不会突出显示当前图库标签,因为$ url( http://www.domain.com/gallery/2/ )不等于$ gallerypageurl( http ://www.domain.com/gallery/

如何仅提取没有页码/ 2 /或/ 3 /

的页面网址

4 个答案:

答案 0 :(得分:1)

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

if (stristr($url, $gallerypageurl) !== false)
{
  // $gallerypageurl was found in $url
  echo "selected";
}

答案 1 :(得分:1)

你可以用

完成
if (strpos($url, $gallerypageurl) !== false) {
    echo 'selected';
}

答案 2 :(得分:0)

如果部分名称位于网址路径的第一段,则此功能仅

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' : '';

答案 3 :(得分:0)

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

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

之前拨打array_shift两次,跳过http和域名,并将数组编入索引。

顺便说一下,您应该在进一步处理之前清理$_SERVER密钥。