gpt4 book ai didi

php - 获取当前 url,不包括包含的文件名

转载 作者:行者123 更新时间:2023-11-28 11:11:01 25 4
gpt4 key购买 nike

我有一个名为 administrator1.php 的文件,其中包含 test.php。所以 administrator1.php 里面的代码是

 <?php include 'test.php'; ?>

我在 test.php 中有一个动态导航菜单。代码是

<?php 
$menu = array(
'users' => array('text'=>'USERS', 'url'=>'administrator1.php'),
'createProfile' => array('text'=>'CREATE PROFILE', 'url'=>'administrator2.php'),
'payment' => array('text'=>'PAYMENTS', 'url'=>'administrator3.php'),
'defense' => array('text'=>'DEFENSE', 'url'=>'administrator4.php'),
'progressReport' => array('text'=>'PROGRESS REPORT', 'url'=>'administrator5.php'),
);

class Nav {
function GenerateMenu($items) {
$html = "<ul>";
foreach($items as $item) {
if(stristr(__FILE__,$item['url'])===FALSE) {
$html .= "<li><a href='{$item['url']}' ><span><B>{$item['text']}</B></span> </a> </li>";
}
else {
$html .= "<li class='active'><a href='{$item['url']}' ><span><B>{$item['text']}.nnn</B></span> </a></li>";
}
}
$html .= "</ul>";
return $html;
}};

echo Nav::GenerateMenu($menu);
?>

我在同一个文件中调用了 Nav 方法。

这里的问题是,将打印整个导航栏,但不会调用所选元素 ('USERS') 的 CSS 类 active。但是,如果我在 administrator1.php 文件中替换整个代码而不包含 test.php 文件,它就可以正常工作。所以我想这是包含文件的文件路径的问题。是不是因为我使用了 __FILE__ 来获取当前路径?那么如何获取不包括路径中包含的文件名的当前文件路径呢?

最佳答案

为了调用静态函数,我们可以使用:: 运算符。但是为了访问类的非静态成员,你应该创建对象,比如 -

$nav_ob = new Nav();
echo $nav_ob->GenerateMenu($menu);

创建数组时有问题 -

$menu = array(
'users' => array('text'=>'USERS', 'url'=>'administrator1.php'),
'createProfile' => array('text'=>'CREATE PROFILE', 'url'=>'administrator2.php'),
'payment' => array('text'=>'PAYMENTS', 'url'=>'administrator3.php'),
'defense' => array('text'=>'DEFENSE', 'url'=>'administrator4.php'),
'progressReport' => array('text'=>'PROGRESS REPORT', 'url'=>'administrator5.php'), //Here
);

最后一个元素后的逗号。应该是——

$menu = array(
'users' => array('text'=>'USERS', 'url'=>'administrator1.php'),
'createProfile' => array('text'=>'CREATE PROFILE', 'url'=>'administrator2.php'),
'payment' => array('text'=>'PAYMENTS', 'url'=>'administrator3.php'),
'defense' => array('text'=>'DEFENSE', 'url'=>'administrator4.php'),
'progressReport' => array('text'=>'PROGRESS REPORT', 'url'=>'administrator5.php')
);

已更新

<?php 
$menu = array(
'users' => array('text'=>'USERS', 'url'=>'administrator1.php'),
'createProfile' => array('text'=>'CREATE PROFILE', 'url'=>'administrator2.php'),
'payment' => array('text'=>'PAYMENTS', 'url'=>'administrator3.php'),
'defense' => array('text'=>'DEFENSE', 'url'=>'administrator4.php'),
'progressReport' => array('text'=>'PROGRESS REPORT', 'url'=>'administrator5.php')
);

class Nav {
function GenerateMenu($path, $items) {
$html = "<ul>";
foreach($items as $item) {
if(stristr($path,$item['url'])===FALSE) {
$html .= "<li><a href='{$item['url']}' ><span><B>{$item['text']}</B></span> </a> </li>";
}
else {
$html .= "<li class='active'><a href='{$item['url']}' ><span><B>{$item['text']}.nnn</B></span> </a></li>";
}
}
$html .= "</ul>";
return $html;
}};
?>

在包含上述 php 文件后的每个 administrator.php 文件上调用如下方法 -

$nav_ob = new Nav();
echo $nav_ob->GenerateMenu(__FILE__, $menu);

希望这会有所帮助。

关于php - 获取当前 url,不包括包含的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com