PHP请求URI:获取第一级

10
如果我有一个url,例如www.example.com/test/example/product.html,我该如何获取test部分(即顶级)?
我明白你会使用$_SERVER['REQUEST_URI'],可能还需要使用substrtrim,但我不确定具体如何操作。谢谢!
2个回答

30

使用explode将字符串拆分为数组,然后取出所需部分。

$whatINeed = explode('/', $_SERVER['REQUEST_URI']);
$whatINeed = $whatINeed[1];
如果你使用的是 PHP 5.4 版本,你可以这样做:$whatINeed = explode('/', $_SERVER['REQUEST_URI'])[1];

3
这句话的意思是“这不应该是$whatINeed[1]吗?$_SERVER['REQUEST_URI']以斜杠开头,导致第一个URI级别在[1]而不是[0]。”请注意,我的翻译尽可能保持了原文的语义,同时更加通俗易懂。 - CodeX
感谢您修复它。 :) - Samy Dindane

5
<?php
$url = 'http://username:password@hostname.foo.bar/test/example/product.html?arg=value#anchor';

print_r(parse_url($url));

$urlArray = parse_url($url);

/* Output:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /test/example/product.html
    [query] => arg=value
    [fragment] => anchor
)


*/

echo dirname($urlArray[path]);

/* Output:

/test    

*/

2
嗯,使用parse_url的想法还不错,但是dirname会返回整个目录名"/text/example"。它只会向上一级。 - Tomasz Struczyński
很好的发现,你要么需要多次将其输入到自身中,要么使用explode函数(但要注意跨操作系统问题)。 - Incognito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接