超好用的php中获取当前页面的完整url的方法
首先我们知道php获取当前页面地址主要是通过$_SERVER
这个预定义全局变量。那这个变量具体有哪些参数请看这篇文章 。PHP超全局变量$_SERVER
那我们现在介绍几个我们需要用到的path信息。
1、获取域名或主机地址。
如果你是localhost的,或者IP 111.65.78.101形式的都可以获取到对应的。本例子的测试地址为:http://www.xiaoerhu.com/php/index.php?id=100
//获取域名或主机地址 // 测试地址:http://www.xiaorhu.com/php/index.php?id=100 echo $_SERVER['HTTP_HOST']; // www.xiaorhu.com // 测试地址:http://localhost/php/index.php?id=100 echo $_SERVER['HTTP_HOST']; // localhost // 测试地址:http://111.65.78.101/php/index.php?id=100 echo $_SERVER['HTTP_HOST']; // 111.65.78.101
2、获取网页地址
echo $_SERVER['PHP_SELF']; // /php/index.php
3、获取网址参数
echo $_SERVER["QUERY_STRING"]; // id = 100
4、获取端口号
// 如果你的网址是 http://www.xiaoerhu.com:8181 echo $_SERVER["SERVER_PORT"]; // 8181
5、获取当前正在执行脚本的文件名
echo $_SERVER["PHP_SELF"]; // /php/index.php
6、当前脚本路径,根目录之后的目录。
echo $_SERVER["REQUEST_URI"]; // /php/index.php
剩下的我们就是把获取到的这些进行组装就行了。
获取完整的Url
//获取完整的url echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; // http://www.xiaorhu.com/php/index.php?id=100
获取包含端口号的url
//包含端口号的完整url echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; // http://www.xiaorhu.com:8181/php/index.php?id=100
只获取请求路径
// 只取路径的情况 $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; echo dirname($url); // http://localhost/blog
下面我们把他封装为一个常用的日常函数,方便平时使用
/** * 完整url链接 * @return string */ function URL(){ $http_url = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; if (isset($_SERVER['HTTP_HOST'])) { $http_url .= $_SERVER['HTTP_HOST']; } else { $http_url .= $_SERVER["SERVER_NAME"]; } if (isset($_SERVER['REQUEST_URI'])) { $http_url .= $_SERVER['REQUEST_URI']; } else { if (isset($_SERVER['PHP_SELF'])) { $http_url .= $_SERVER['PHP_SELF']; } else { $http_url .= $_SERVER['SCRIPT_NAME']; } if (isset($_SERVER['QUERY_STRING'])) { $http_url .= $_SERVER['QUERY_STRING']; } else { $http_url .= isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; } } return $http_url; }