PHP получает URI-части URL-адреса


У меня есть 2 строки, и я заменяю их, поэтому я получаю только части URI.

$base_url = 'http://localhost/project/';
$url      = 'http://localhost/project/controller/action/param1/param2';

Я проверяю наличие частей URI.

$only_segments = str_replace($base_url, '', $real_url);

В основном я делаю: {url} - {base_url} = {only_segments}

Тогда я могу получить сегменты:

$parts = explode('/', $only_segments);
print_r($parts);

Вопрос:

Я на правильном пути или это можно сделать проще с помощью $_SERVER['REQUEST_URI'] ?

Примечание: Я не хочу project в частях URI, это подпапка localhost.

 6
Author: Ing. Michal Hudak, 2013-11-13

2 answers

Загляните в parse_url(). Это поможет вам пройти большую часть пути туда. Все, что вам нужно будет сделать, это удалить часть пути, которая является частью вашего базового URL-адреса.

print_r(parse_url('http://localhost/project/controller/action/param1/param2'));

Array
(
    [scheme] => http
    [host] => localhost
    [path] => /project/controller/action/param1/param2
)
 11
Author: John Conde, 2013-11-13 14:25:29

Более полный пример:

var_dump(parse_url(http://lambo-car-dealer.com/Lambo/All+Models/2018/?limits=10&advance_options=no));

Вывод:

array(4) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(48) "lambo-car-dealer.com"
  ["path"]=>
  string(44) "/Lambo/All+Models/2018/"
 ["query"]=>
 string(121) "limits=10&advance_options=no"

}

Также можно получить это таким образом:

$URL = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$URI = "$_SERVER[REQUEST_URI]";
 0
Author: Mike Q, 2017-12-22 21:49:20