当我也使用 include 函数时,如何使用 php 获取当前网页名称?



我有一个简单的网页和一个简单的菜单。

网页的每个页面(例如index.php, page-01.php等)使用include函数将菜单拉进来:

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

我想对当前页面的菜单项进行格式化,所以我试图让菜单检查当前页面的名称。例如,当我使用index.php时,我希望menu.php中的函数返回"index"

我试着在menu.php中使用这个:

echo basename(__FILE__, '.php'); 

但是它返回"menu"相反(回想起来,这很有意义)。

我可以在我的menu.php文件中使用什么来返回当前页面名称?

谢谢!

可以使用$_SERVER['REQUEST_URI']获取用户输入的URL的路径和查询片段(/blog/technology/latest?limit=10),$_SERVER['SCRIPT_NAME']获取相对于文档根(/blog/show-category.php)的脚本文件路径,$_SERVER['SCRIPT_FILENAME']获取服务器磁盘上的完整路径(/var/www/public/blog/show-category.php)。我认为所有这些在所有服务器api中都是相当标准的,但是检查一下你的服务器(运行phpinfo()快速浏览一下)不会有什么坏处。

没有将url映射到菜单项的通用解决方案,因为您基本上可以编写任何您想要的结构。在最坏的情况下,您将不得不在某处存储一个映射,可能是一个数组,您也可以使用它来构建菜单:

$routes = [
'Latest posts' => [
'/blog/lifestyle/latest' => 'Lifestyle',
'/blog/technology/latest' => 'Technology',
],
];

如果您的项目遵循遗留结构,其中单个脚本仅在URL中引用,那么它应该是直接的。

您可以在包含的文件中定义一个函数,并使用当前文件名调用它:

index.php, page-01.php, page-02.php…

<?php
include 'menu.php';
$file = basename(__FILE__, '.php'); 
formatePage($file);
?>

menu.php:

<?php
function formatePage($file)
{
print $file;    
}
?>

最新更新