今天写表白墙时候的导航判断遇到的这个问题。我的解决思路是这样:
判断当前的php文件名来确定导航条的哪块高亮。
那php如何获取当前的url文件名呢?
我是这样处理的 :shock:
教程
首先肯定是要获取当前页面URL的,在这里我们使用php的$_SERVER['PHP_SELF']
来获取获取网页地址
假设url为 https://www.123.net/index.php
1
2
|
$php_Self = $_SERVER [ 'PHP_SELF' ]; //获取网页地址
//输出结果:https://www.123.net/index.php
|
输出后发现,我们只需要index.php,前面一大串东西都是没用的。
怎么办呢?
这里我们就用到了substr()函数。substr()
是用来返回字符串的一部分:
substr语法
substr(string,start,length)
参数 | 描述 |
---|---|
string | 必需。规定要返回其中一部分的字符串。 |
start |
必需。规定在字符串的何处开始。
|
length |
可选。规定被返回字符串的长度。默认是直到字符串的结尾。
|
看到这个函数的第二个参数,规定在字符串的何处开始。很显然是在url中的最后一个/开始才是我们所需要的。
于是我们又需要用到 strrpos()
函数来取得/最后一次出现的位置。
strrpos语法
strrpos(string,find,start)
参数 | 描述 |
---|---|
string | 必需。规定被搜索的字符串。 |
find | 必需。规定要查找的字符。 |
start | 可选。规定在何处开始搜索。 |
所以总代码如下:
1
2
|
$php_Self = substr ( $_SERVER [ 'PHP_SELF' ], strripos ( $_SERVER [ 'PHP_SELF' ], "/" )+1);
//为啥要加1呢?因为要排除前面的那个 /
|
比较推荐的一个函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//获得当前的脚本网址
function GetCurUrl()
{
if (! empty ( $_SERVER [ "REQUEST_URI" ]))
{
$scriptName = $_SERVER [ "REQUEST_URI" ];
$nowurl = $scriptName ;
} else
{
$scriptName = $_SERVER [ "PHP_SELF" ];
if ( empty ( $_SERVER [ "QUERY_STRING" ]))
{
$nowurl = $scriptName ;
} else
{
$nowurl = $scriptName . "?" . $_SERVER [ "QUERY_STRING" ];
}
}
return $nowurl ;
}
|
这样就解决了,很多情况下都是需要一些字符串截取函数的帮助才可以得到我们想要的结果。