PHP получить уровень URL - PullRequest
       8

PHP получить уровень URL

0 голосов
/ 11 февраля 2011

Я новичок в PHP и просто занимаюсь тематикой в ​​Drupal.Интересно, возможно ли это:

например,

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?

A.

Ответы [ 7 ]

4 голосов
/ 11 февраля 2011
$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

Посмотреть на CodePad .

1 голос
/ 11 февраля 2011

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
?>
1 голос
/ 11 февраля 2011

Не знаю точно, если я вас понимаю, но, кажется, вы ищете что-то вроде этого

$pathSegments = explode('/', $_SERVER['REQUEST_URI']);
$level = 'level' . count($segments);
0 голосов
/ 11 февраля 2011

Кажется, что в других ответах отсутствует класс, производный от последнего сегмента URL. Итак, чтобы получить счет:

$level = count(explode('/', $_SERVER['REQUEST_URI']));
$page = trim(strrchr($_SERVER['REQUEST_URI'], "/"), "/");
0 голосов
/ 11 февраля 2011

Предполагая, что вы переписали свои URL-адреса и можете обращаться к каждому уровню как к переменной через $ _GET или что-то еще ... $levels = count($_GET);

Просто настройте его для собственных нужд.

0 голосов
/ 11 февраля 2011

Разделите на / и посчитайте количество полученных токенов.Вычтите 3 для учета 3 / в доменном имени.

Итак:

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

0 голосов
/ 11 февраля 2011

Текущий URL представлен PHP как $ _SERVER ['REQUEST_URI'] - например, "/conference-events/rooms-capacities/bob".

Вы можете использовать $x = explode('/', $_SERVER['REQUEST_URI']);, чтобы получить массив с элементом на уровень. Оттуда вы можете count($x) количество элементов в массиве.

...