获取当前页面完整 URL 的代码实现有多种方法,下面我将介绍其中两种较为常用的方式:
PHP 全局变量 $_SERVER 中包含了大量服务器和执行环境信息,可用于获取当前页面的完整 URL。
以下是获取当前页面完整 URL 的示例代码:
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo "当前页面的完整 URL 是:".$url;
上述代码中,$_SERVER['HTTP_HOST']
返回当前域名(例如:www.example.com),$_SERVER['REQUEST_URI']
返回当前页面的路径和查询字符串(例如:/path/to/page.php?id=123)。
PHP 的 parse_url() 函数可以将 URL 解析成其组成部分,包括协议、域名、路径、查询字符串等。结合$_SERVER 中的 SERVER_NAME 和 SERVER_PORT 变量,我们可以使用 parse_url() 来获取当前页面的完整 URL。
以下是获取当前页面完整 URL 的示例代码:
$url_components = array(
"scheme" => ($_SERVER['SERVER_PORT'] == 443) ? "https" : "http",
"host" => $_SERVER['SERVER_NAME'],
"port" => $_SERVER['SERVER_PORT'],
"path" => $_SERVER['REQUEST_URI'],
"query" => $_SERVER['QUERY_STRING']
);
$url = unparse_url($url_components);
echo "当前页面的完整 URL 是:".$url;
// 使用函数 unparse_url() 将解析出的 URL 组件拼接成完整 URL
function unparse_url($parsed_url) {
$scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
$host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
$port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
$path = isset($parsed_url['path']) ? $parsed_url['path'] : '';
$query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
$fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
return $scheme . $host . $port . $path . $query . $fragment;
}
上述代码中,我们先使用 $_SERVER 中的 SERVER_NAME 和 SERVER_PORT 变量获取当前域名和端口号,然后使用 parse_url() 函数解析出当前页面的 URL 组件,最后使用函数 unparse_url() 将解析出的 URL 组件拼接成完整 URL。
以上就是两种获取当前页面完整 URL 的常用方法,可以根据具体情况选择使用。