📅  最后修改于: 2023-12-03 15:07:45.766000             🧑  作者: Mango
在 PHP 中,我们可以使用 $_GET
全局数组来获取 URL 中的查询参数(例如 ?foo=bar
)。但是如果我们想获取 URL 中的路径部分,我们需要使用其他的方式。
我们可以使用 $_SERVER['REQUEST_URI']
来获取完整的请求路径,包括查询参数。例如:
$path = $_SERVER['REQUEST_URI'];
// 对于 URL https://example.com/foo/bar?baz=qux,$path 的值为 "/foo/bar?baz=qux"
请注意,这个方法会包括查询参数,所以如果我们只想要路径部分,我们需要对其进行处理:
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// 对于 URL https://example.com/foo/bar?baz=qux,$path 的值为 "/foo/bar"
如果我们只想获取 URL 中的某个路径段(例如 foo
或 bar
),我们可以使用 explode
函数按照路径分隔符(通常是 /
)来拆分路径:
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', $path);
// 对于 URL https://example.com/foo/bar/baz,$segments 的值为 ['foo', 'bar', 'baz']
// 对于 URL https://example.com,$segments 的值为 ['']
请注意,如果 URL 中没有路径部分,$segments
数组的唯一元素将是一个空字符串。
如果我们知道 URL 中每个路径段的含义,我们可以使用数组索引来获取特定的路径段:
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', $path);
// 对于 URL https://example.com/foo/bar/baz,$segments[0] 的值为 'foo',$segments[1] 的值为 'bar',$segments[2] 的值为 'baz'
请注意,如果我们尝试获取不存在的路径段(例如 $segments[3]
),PHP 将会引发一个“Undefined offset”错误。
以上是在 PHP 中获取 URL 段的三种方法。我们可以使用 $_SERVER['REQUEST_URI']
来获取完整的路径,使用 explode
函数来拆分路径,并使用数组索引来获取特定的路径段。