📜  在 php 中获取 url 段(1)

📅  最后修改于: 2023-12-03 15:07:45.766000             🧑  作者: Mango

在 PHP 中获取 URL 段

在 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 中的某个路径段(例如 foobar),我们可以使用 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 函数来拆分路径,并使用数组索引来获取特定的路径段。