当我同时使用include函数的时候,如何使用php获得当前网页的名称?

gk7wooem  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(97)

我有一个简单的网页与一个简单的菜单。
网页的每一页(例如index.php、page-01.php等)都使用include函数拉入菜单:

<?php

include 'menu.php';

?>

我想格式化当前页面的菜单项,所以我尝试让菜单检查当前页面的名称。例如,当我在index.php上时,我希望menu.php中的函数返回“index”。
我试着在menu.php中使用这个:

echo basename(__FILE__, '.php');

但它返回“menu”(回想起来,这很有意义)。
我可以在menu.php文件中使用什么来返回当前页面名称?
谢谢你!

agyaoht7

agyaoht71#

您可以在包含的文件中定义函数,并使用当前文件名调用该函数:
首页----期刊主要分类----期刊细介绍----期刊题录与文摘----期刊详细文摘内容

<?php
include 'menu.php';

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

menu.php:

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

mdfafbf12#

您可以使用$_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()快速了解一下)。
没有通用的解决方案来MapURL到菜单项,因为你可以编写任何你想要的结构。在最坏的情况下,你必须在某个地方存储一个Map,也许是一个数组,你也可以用来构建菜单:

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

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

相关问题