2012-05-18 2 views
4

Если бы я был URL, такую ​​как www.example.com/test/example/product.htmlURI запроса PHP: получить первый уровень

Как бы я быть в состоянии получить только тестовую часть (так верхний уровень)

Я понимаю, вы должны использовать $_SERVER['REQUEST_URI'] и, возможно, substr или trim

Но я не уверен, как это сделать, спасибо!

ответ

15

Разделите строку на массив с помощью explode, а затем возьмите нужную деталь.

$whatINeed = explode('/', $_SERVER['REQUEST_URI']); 
$whatINeed = $whatINeed[1]; 

Если вы используете PHP 5.4, вы можете сделать $whatINeed = explode('/', $_SERVER['REQUEST_URI'])[1];. :)

+0

Приятный ответ здесь –

+0

Спасибо, что указали это. Копировать/Вставить ftw. : D –

+3

Не должно ли это быть $ whatINeed [1]? $ _SERVER ['REQUEST_URI'] начинается с косой черты, в результате чего первый уровень URI находится в [1], а не [0]. – CodeX

4
<?php 
$url = 'http://username:[email protected]/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  

*/ 
+1

Хм, идея использования parse_url в порядке, но dirname вернет «/ text/example» - все имя dirname. Он поднимается только на один уровень. –

+0

Хороший улов, вам придется либо кормить его себе несколько раз, либо использовать взрыв (просто следите за проблемами, связанными с перекрестными ОС) – Incognito

Смежные вопросы