繁体   English   中英

php获取URL级别

[英]php get level of url

我是一个完全的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来掌握水平吗?

一种。

$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上查看

不完全知道,如果我了解您,但似乎您正在寻找类似的内容

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

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
?>

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

您可以使用$x = explode('/', $_SERVER['REQUEST_URI']); 得到一个带有每级物品的数组。 从那里,您可以count($x)数组中的项目数。

除以/并计算获得的令牌数。 减去3占域名中的3 /。

所以:

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

假设您已经重写了url,并且可以通过$ _GET或其他方式将每个级别作为变量进行访问... $levels = count($_GET);

只需根据自己的需要进行调整即可。

其他答案似乎缺少从URL的最后一段派生的类。 因此,获得计数:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM