【问题标题】:PHP Get name of current directoryPHP 获取当前目录的名称
【发布时间】:2012-04-17 08:25:02
【问题描述】:

我的网站文件夹中有一个 php 页面。

我需要将当前目录的名称添加到一个变量中例如:

$myVar = current_directory_name;

这可能吗?

【问题讨论】:

    标签: php


    【解决方案1】:
    getcwd();
    

    dirname(__FILE__);
    

    或 (PHP5)

    basename(__DIR__) 
    

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

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

    您可以使用basename() 获取路径的尾随部分:)

    在您的情况下,我想说您最有可能使用getcwd(),当您的文件需要包含另一个库并包含在另一个库中时,dirname(__FILE__) 会更有用。

    例如:

    main.php
    libs/common.php
    libs/images/editor.php
    

    在你的common.php中你需要使用editor.php中的函数,所以你使用

    common.php:

    require_once dirname(__FILE__) . '/images/editor.php';
    

    main.php:

    require_once libs/common.php
    

    这样,当common.php 在main.php 中为require'd 时,common.php 中的require_once 的调用将正确地在images/editor.php 中包含editor.php,而不是尝试查看main.php 所在的当前目录正在运行。

    【讨论】:

    • 和 PHP 5 中的 basename(__DIR__)
    • 这给了我整个路径。有没有办法只获取目录名称?
    • @Satch3000 basename(getcwd())
    • 请注意,如果您使用 include 或 required,__DIR__ 是包含文件的路径,而不是当前目录
    • 使用 basename(__DIR__) 为我节省了一天。非常感谢分享!
    【解决方案2】:

    您可以使用dirname(__FILE__)获取当前文件所在目录的路径。

    示例:/path_to/your_dir/your_file.php

    // use dirname to get the directory of the current file
    $path = dirname(__FILE__);
    // $path here is now /path_to/your_dir
    
    // split directory into array of pieces
    $pieces = explode(DIRECTORY_SEPARATOR, $path);
    // $pieces = ['path_to', 'your_dir']
    
    // get the last piece
    echo $pieces[count($pieces) - 1];
    // result is: your_dir
    

    【讨论】:

    • OP 似乎已经接受了他们问题的答案。虽然你已经明显增加了价值,但你需要在这里发泄你的皮毛吗?
    • stackoverflow.com/help/formatting 将解释如何使事物粗体避免使用大写字母,您非常正确地指出这表示在互联网上大喊大叫。
    【解决方案3】:

    其实我发现最好的解决方案如下:

    $cur_dir = explode('\\', getcwd());
    echo $cur_dir[count($cur_dir)-1];
    

    如果你的目录是 www\var\path\ Current_Path

    然后返回 Current_path

    【讨论】:

    • 注意,在 Linux 服务器中,我们不使用反斜杠,而是使用斜杠。 PHP 有一个神奇的常数可以让它跨平台,见PATH_SEPARATOR
    【解决方案4】:
    echo basename(__DIR__); will return the current directory name only
    echo basename(__FILE__); will return the current file name only
    

    【讨论】:

    • 只要你有 PHP 5.3 或更高版本
    【解决方案5】:

    仅获取执行脚本的目录名称:

    //Path to script: /data/html/cars/index.php
    echo basename(dirname(__FILE__)); //"cars"
    

    【讨论】:

      【解决方案6】:

      $myVar = str_replace('/', '', $_SERVER[REQUEST_URI]);

      库/图像/index.php
      结果:图片

      【讨论】:

        【解决方案7】:

        要获取当前目录的名称,我们可以使用getcwd()dirname(__FILE__)getcwd()dirname(__FILE__) 不是同义词。他们完全按照他们的名字行事。如果您的代码是通过引用其他目录中存在的另一个文件中的类来运行的,那么这两种方法将返回不同的结果。

        例如,如果我正在调用一个类,从其中调用这两个函数并且该类存在于 /index.php 的某些 /controller/goodclass.php 中,那么 getcwd() 将返回 '/dirname(__FILE__) 将返回 /controller

        【讨论】:

          【解决方案8】:

          我使用这一行来获取没有路径的实际文件目录名。 (适用于窗户)

          substr(dirname(__FILE__), strrpos(dirname(__FILE__), '\\') + 1)
          

          我稍微改动了一下,也可以在 Linux 上工作

          substr(dirname(__FILE__), strrpos(str_replace('\\', '/', dirname(__FILE__)), '/') + 1)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-29
            • 1970-01-01
            • 2019-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-21
            • 2020-07-16
            相关资源
            最近更新 更多