PHP获取URL的URI部分

Ing*_*dak 7 php uri

我有2个字符串并替换它们,所以我只得到URI部分.

$base_url = 'http://localhost/project/';
$url      = 'http://localhost/project/controller/action/param1/param2';
Run Code Online (Sandbox Code Playgroud)

我正在检查URI部分.

$only_segments = str_replace($base_url, '', $real_url);
Run Code Online (Sandbox Code Playgroud)

基本上我做: {url} - {base_url} = {only_segments}

然后我可以获得细分:

$parts = explode('/', $only_segments);
print_r($parts);
Run Code Online (Sandbox Code Playgroud)

题:

我是在正确的道路上还是使用$ _SERVER ['REQUEST_URI']可以更轻松地完成?

注意:我不想project在URI部分,它是localhost的子文件夹.

Joh*_*nde 12

看看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
)
Run Code Online (Sandbox Code Playgroud)

  • 应该说如果有一个查询字符串:''http:// localhost/project/controller/action/param1/param2?foo = bar'`那么它将被放入数组中以及数组键`query `喜欢如此:''query'=>'foo = bar'` (5认同)

Mik*_*e Q 5

一个更完整的例子:

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

输出:

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"
Run Code Online (Sandbox Code Playgroud)

}

也可以这样获取:

$URL = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$URI = "$_SERVER[REQUEST_URI]";
Run Code Online (Sandbox Code Playgroud)