获取包含PHP脚本的文件的名称

时间:2011-07-24 02:07:36

标签: php filenames

这是我想要做的一个例子:

的index.php

<ul><?php include("list.php") ?></ul>

list.php的

<?php
    if (PAGE_NAME is index.php) {
        //Do something
    }
    else {
        //Do something
    }
?>

如何获取包含list.php脚本(PAGE_NAME)的文件的名称?我试过了basename(__FILE__),但这给了我list.php

6 个答案:

答案 0 :(得分:26)

$_SERVER["PHP_SELF"];返回您想要的内容

答案 1 :(得分:6)

如果你真的需要知道当前包含哪个文件 - 这就是解决方案:

$trace = debug_backtrace();

$from_index = false;
if (isset($trace[0])) {
    $file = basename($trace[0]['file']);

    if ($file == 'index.php') {
        $from_index = true;
    }
}

if ($from_index) {
    // Do something
} else {
    // Do something else
}

答案 2 :(得分:6)

如果有人从搜索引擎到达此处,只有当脚本位于服务器根目录中时,接受的答案才会起作用,因为PHP_SELF是具有相对于服务器根目录的路径的文件名。所以通用解决方案是

basename($_SERVER['PHP_SELF'])

还要记住,这会返回顶级脚本,例如,如果您有一个脚本并包含一个文件,然后在包含文件中包含另一个文件并尝试此操作,您将获得第一个脚本的名称,而不是第二个。

答案 3 :(得分:2)

也许您可以执行以下操作:

<ul>
    <?php
        $page_name = 'index';
        include("list.php")
    ?>
</ul>

list.php的

<?php
    if ($pagename == 'index') {
        //Do something
    }
    else {
        //Do something
    }
?>

答案 4 :(得分:2)

在包含list.php的代码中,在您加入之前,您可以设置一个名为$this_page的变量,然后list.php可以查看$this_page的值的测试并执行相应

答案 5 :(得分:1)

解决方案basename($_SERVER['PHP_SELF'])有效,但我建议您使用strtolower(basename($_SERVER['PHP_SELF']))来检查“Index.php”。或者&#39; index.php&#39;错误。

但是如果你想要一个替代方案,你可以这样做:
<?php if (strtolower(basename($_SERVER['SCRIPT_FILENAME'], '.php')) === 'index'): ?>