代码之家  ›  专栏  ›  技术社区  ›  Alex

获取当前脚本文件名

  •  230
  • Alex  · 技术社区  · 14 年前

    如果我有PHP脚本,如何从脚本中获取文件名?

    另外,给定表单脚本的名称 jquery.js.php ,如何仅提取“jquery.js”部分?

    15 回复  |  直到 11 年前
        1
  •  391
  •   alex    9 年前

    只需使用 PHP magic constant __FILE__ 获取当前文件名。

    但似乎你想要没有 .php . 所以。。。

    basename(__FILE__, '.php'); 
    

    一个更通用的文件扩展名删除程序将如下所示。。。

    function chopExtension($filename) {
        return pathinfo($filename, PATHINFO_FILENAME);
    }
    
    var_dump(chopExtension('bob.php')); // string(3) "bob"
    var_dump(chopExtension('bob.i.have.dots.zip')); // string(15) "bob.i.have.dots"
    

    使用标准字符串库函数是 much quicker ,正如你所料。

    function chopExtension($filename) {
        return substr($filename, 0, strrpos($filename, '.'));
    }
    
        2
  •  117
  •   SparK    8 年前

    当您希望include知道它在哪个文件中(即实际请求的脚本名)时,请使用:

    basename($_SERVER["SCRIPT_FILENAME"], '.php')
    

    因为当你写一个文件时,你通常知道它的名字。

    编辑:正如Alec Teal所说,如果使用符号链接,它将显示符号链接名称。

        3
  •  68
  •   Angel Politis    6 年前

    http://php.net/manual/en/function.pathinfo.php

    pathinfo(__FILE__, PATHINFO_FILENAME);
    
        4
  •  56
  •   Dennis T --Reinstate Monica-- inazaruk    10 年前

    以下是两者之间的区别 basename(__FILE__, ".php") basename($_SERVER['REQUEST_URI'], ".php") .

    基名(“.php”文件) 显示包含此代码的文件的名称-这意味着如果将此代码包含在 页眉 当前页是 index.php索引 ,它将返回 标题 指数 .

    basename($_SERVER["REQUEST_URI"], ".php") -如果使用include this code in 页眉 当前页是 index.php索引 ,它将返回 指数 标题 .

        5
  •  26
  •   charan315    12 年前

    这可能有助于:

    basename($_SERVER['PHP_SELF'])
    

    即使您使用include,它也会工作。

        6
  •  19
  •   user    14 年前

    亚历克斯的回答是正确的,但也可以不使用这样的正则表达式:

    str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
    
        7
  •  14
  •   begoyan    9 年前

    下面是我最近在搜索答案时发现的一个列表:

    //self name with file extension
    echo basename(__FILE__) . '<br>';
    //self name without file extension
    echo basename(__FILE__, '.php') . '<br>';
    //self full url with file extension
    echo __FILE__ . '<br>';
    
    //parent file parent folder name
    echo basename($_SERVER["REQUEST_URI"]) . '<br>';
    //parent file parent folder name with //s
    echo $_SERVER["REQUEST_URI"] . '<br>';
    
    // parent file name without file extension
    echo basename($_SERVER['PHP_SELF'], ".php") . '<br>';
    // parent file name with file extension
    echo basename($_SERVER['PHP_SELF']) . '<br>';
    // parent file relative url with file etension
    echo $_SERVER['PHP_SELF'] . '<br>';
    
    // parent file name without file extension
    echo basename($_SERVER["SCRIPT_FILENAME"], '.php') . '<br>';
    // parent file name with file extension
    echo basename($_SERVER["SCRIPT_FILENAME"]) . '<br>';
    // parent file full url with file extension
    echo $_SERVER["SCRIPT_FILENAME"] . '<br>';
    
    //self name without file extension
    echo pathinfo(__FILE__, PATHINFO_FILENAME) . '<br>';
    //self file extension
    echo pathinfo(__FILE__, PATHINFO_EXTENSION) . '<br>';
    
    // parent file name with file extension
    echo basename($_SERVER['SCRIPT_NAME']);
    

    不要忘记删除:)

    <br>

        8
  •  6
  •   Shah Alom    11 年前

    您也可以使用:

    echo $pageName = basename($_SERVER['SCRIPT_NAME']);
    
        9
  •  4
  •   Megachip matyig    11 年前

    更普遍的方法是 pathinfo() . 因为版本5.2支持 PATHINFO_FILENAME .

    所以

    pathinfo(__FILE__,PATHINFO_FILENAME)
    

    也会做你需要的。

        10
  •  2
  •   Wakar Ahmad Khan    7 年前

    试试这个

    $current_file_name = $_SERVER['PHP_SELF'];
    echo $current_file_name;
        11
  •  2
  •   Bolli    6 年前

    这对我有效,即使在包含的PHP文件中运行,并且您希望当前PHP文件的文件名运行:

    $currentPage= $_SERVER["SCRIPT_NAME"];
    $currentPage = substr($currentPage, 1);
    echo $currentPage;
    

    结果:

    index.php索引

        12
  •  1
  •   JBH    7 年前

    $argv[0]

    我发现用起来简单多了 $argv[0] . 执行脚本的名称始终是 $argv 阵列。与其他答案中建议的所有其他方法不同,此方法不需要使用 basename() 删除目录树。例如:

    • echo __FILE__; 返回类似于 /my/directory/path/my_script.php

    • echo $argv[0]; 回报 my_script.php

        13
  •  0
  •   Rahul Gupta Jerod Venema    11 年前
    $filename = "jquery.js.php";
    $ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
    $file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
    
        14
  •  0
  •   Dariusz Sikorski    9 年前

    __FILE__ 使用基于本地主机服务器结果的示例:

    echo __FILE__;
    // C:\LocalServer\www\templates\page.php
    
    echo strrchr( __FILE__ , '\\' );
    // \page.php
    
    echo substr( strrchr( __FILE__ , '\\' ), 1);
    // page.php
    
    echo basename(__FILE__, '.php');
    // page
    
        15
  •  0
  •   SparK    7 年前

    正如有人所说 basename($_SERVER["SCRIPT_FILENAME"], '.php') basename( __FILE__, '.php') 是测试这个的好方法。

    对我来说,使用第二种方法是我所做的一些验证说明的解决方案