在 PHP 中,如何获得当前页面的 URL? 最好是 http://domain.example之后的部分。
http://domain.example
$_SERVER['REQUEST_URI']
有关 $_ SERVER 数组中可用信息的详细信息,请参阅 它的 PHP 手册页。
如果您还需要查询字符串(URL 中 ?后面的位) ,该部分在下面这个变量中:
?
$_SERVER['QUERY_STRING']
$uri = $_SERVER['REQUEST_URI'];
这将为您提供所请求的目录和文件名。如果使用 mod _ rewrite,这将非常有用,因为它可以告诉您用户正在查看哪个页面。
如果需要实际的文件名,可以尝试使用 $_SERVER['PHP_SELF']、神奇常量 __FILE__或 $_SERVER['SCRIPT_FILENAME']。后面的2个提供了完整的路径(从服务器根目录) ,而不仅仅是你网站的根目录。它们对于 include 等是有用的。
$_SERVER['PHP_SELF']
__FILE__
$_SERVER['SCRIPT_FILENAME']
$_SERVER['PHP_SELF']提供了相对于网站根目录的文件名。
$relative_path = $_SERVER['PHP_SELF']; $complete_path = __FILE__; $complete_path = $_SERVER['SCRIPT_FILENAME'];
其他的答案都是正确的。但是,需要注意的是: 如果希望获取 URI 中 ?之后的内容,那么应该使用 $_GET[]数组。
$_GET[]
你可以使用 $_SERVER['HTTP_REFERER']这将给你整个网址,例如:
$_SERVER['HTTP_REFERER']
假设你想得到网站名称的网址 www.example.com然后 $_SERVER['HTTP_REFERER']将给你 https://www.example.com
www.example.com
https://www.example.com
如果你只想要网址在 http://domain.example之后的部分,试试这个:
<?php echo $_SERVER['REQUEST_URI']; ?>
如果当前 URL 是 http://domain.example/some-slug/some-id,echo 将只返回 /some-slug/some-id。
http://domain.example/some-slug/some-id
/some-slug/some-id
如果你想要完整的网址,试试这个:
<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>