php获取网址级别

时间:2011-02-10 23:47:08

标签: php drupal themes

我是一个完整的PHP新手,我只是在Drupal中做一些主题。只是想知道这是否可能:

e.g。

http://xxxxxxxxxx.com/conference-events,给出:

<body id="conference-events" class="level1">

http://xxxxxxxxxx.com/conference-events/rooms-capacities,给出:

<body id="conference-events" class="rooms-capacities level2">

http://xxxxxxxxxx.com/conference-events/rooms-capacities/bob,给出:

<body id="conference-events" class="bob level3">

基本上我有ID /第一类的代码,但是有可能用php获取关卡吗?

一个。

7 个答案:

答案 0 :(得分:4)

$uri = $_SERVER['REQUEST_URI'];

// For this example's sake
$uri = 'http://xxxxxxxxxx.com/conference-events/rooms-capacities';

$path = trim(parse_url($uri, PHP_URL_PATH), '/');

$level = count(explode('/', $path));

var_dump($level); // (int) 2

See it on CodePad

答案 1 :(得分:1)

如果我理解你,不要确切地知道,但似乎你正在寻找像这样的东西

$pathSegments = explode('/', $_SERVER['REQUEST_URI']);
$level = 'level' . count($segments);

答案 2 :(得分:1)

7回应并且所有人似乎都错过了这个在Drupal中的事实。 :)

在Drupal中,URl将转换为:

http://xxxxxxxxxx.com/?q=conference-events/rooms-capacities

使用mod_rewrite。

此外,Drupal已经删除了最终存在的尾部斜杠。所以你只需要:

<?php
$level = count(explode('/', $_GET['q'])); // request_path() in D7

var_dump($level); // (int) 2
?>

答案 3 :(得分:0)

当前URL以$ _SERVER ['REQUEST_URI']的形式呈现给PHP - 例如“/ conference-events / rooms-capacity / bob”。

您可以使用$x = explode('/', $_SERVER['REQUEST_URI']);获取每个级别的项目数组。从那里,您可以count($x)数组中的项目数。

答案 4 :(得分:0)

/拆分并计算获得的令牌数量。减去3以计算域名中的3 /。

所以:

$numLvl = count(preg_split("|/|", $url)) - 3;

答案 5 :(得分:0)

假设您已经重写了您的网址,并且可以通过$ _GET或其他内容访问每个级别的变量... $levels = count($_GET);

只需根据自己的需要调整它。

答案 6 :(得分:0)

其他答案似乎缺少从URL的最后一段派生的类。 所以,要得到计数:

$level = count(explode('/', $_SERVER['REQUEST_URI']));
$page = trim(strrchr($_SERVER['REQUEST_URI'], "/"), "/");