使用 parse_url 解析 URL

当我们将解析的 URL 存储在变量中时,不同的部分将作为关联数组提供给我们。

要使给定部分可用,它必须存在于我们正在解析的 URL 中。

不同的部分如下:

  • scheme
  • host
  • port
  • user
  • pass
  • path
  • query
  • fragment

片段部分是用于链接到 HTML 页面中的小节的哈希 (#)。
它不能通过服务器变量从服务器端获得,因为它永远不会作为 HTTP 请求的一部分发送。
尽管如此,它仍然可以通过静态 URL 访问。

要显示给定 URL 的不同可用部分,我们可以 var_dump 返回的关联数组:

var_dump(parse_url('http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']));

输出:

array(3) {
  ["scheme"]=> string(4) "http"
  ["host"]=> string(16) "onitroad.com"
  ["path"]=> string(17) "/index.php"
  ["query"]=> string(16) "test=just_a_test"
}
PHP:Parse_url 函数

PHP parse_url 函数将一个 URL 拆分为不同的部分,并且可以轻松访问 URL 中感兴趣的部分,无论是域名、请求的路径,甚至是 URL 参数。

通常,我们不必直接处理裸查询字符串,因为我们可以通过 $_GET 超级全局访问各个参数。

要解析任何给定的 URL,我们可以将 URL 传递给 parse_url 函数。
例如,如果我们想要解析请求的完整 URL,我们可以使用 REQUEST_URI 和 HTTP_HOST 变量的组合来实现,我们将这些变量提供给 PHP 的 parse_url 函数。

如果我们想获取特定部分,将解析后的 URL 存储在变量中会有所帮助:

$url_to_parse = 'http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$parsed_url = parse_url($url_to_parse);
echo $parsed_url['path'];

如果获取准确的请求 URL 对我们很重要,包括协议(http 或者 https),那么我们应该阅读这篇文章:Get The Full Requested URL in PHP

日期:2020-06-02 22:17:30 来源:oir作者:oir