【问题标题】:PHP Get only directory pathPHP只获取目录路径
【发布时间】:2023-03-02 21:09:01
【问题描述】:

我有:

$page_file_temp = $_SERVER["PHP_SELF"];

将输出:/templates/somename/index.php

我只想从该路径中提取"/templates/somename/"

我该怎么做? 谢谢!

【问题讨论】:

    标签: php path directory


    【解决方案1】:

    也许这是你的解决方案:

    $rootPath = $_SERVER['DOCUMENT_ROOT'];
    $thisPath = dirname($_SERVER['PHP_SELF']);
    $onlyPath = str_replace($rootPath, '', $thisPath);
    

    例如:

    $_SERVER['DOCUMENT_ROOT'] 是服务器的根路径,像这样/home/abc/domains/abc.com/public_html

    $_SERVER['PHP_SELF'] 是关于该脚本的整个路径,例如 /home/abc/domains/abc.com/public_html/uploads/home/process.php

    那么我们可以有:

    $rootPath 赞这个/home/abc/domains/abc.com/public_html

    $thisPath 赞这个/home/abc/domains/abc.com/public_html/uploads/home

    $onlyPath 这样/uploads/home

    【讨论】:

      【解决方案2】:

      使用 parse_url 将考虑 GET 变量和“片段”(# 之后的 URL 部分)以及其他特定于 URL 的部分。

      $url = $_SERVER['PHP_SELF']; // OR $_SERVER['REQUEST_URI']
      
      echo parse_url($url, PHP_URL_PATH);
      

      【讨论】:

        【解决方案3】:

        另一种选择:

        $directory = pathinfo($page_file_temp,PATHINFO_DIRNAME);

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

        【讨论】:

        • 这与:$directory = dirname($page_file_temp);两者都存在问题,因为它们过于简单:它们总是剥离最后一段——即使它是一个目录!
        【解决方案4】:
        $page_directory = dirname($page_file_temp);
        

        dirname

        【讨论】:

        • 注意 dirname() 过于简单——它不检查文件系统。例如 dirname('/folder1/folder2/folder3/') 将返回 '/folder1/folder2'。即它假设 folder3 不是目录。
        【解决方案5】:

        看看dirname()函数。

        从文档中,dirname() 删除了尾部斜杠。如果要保留它,可以将常量 DIRECTORY_SEPARATOR 附加到结果中。

        $dir = dirname('mystring/and/path.txt').DIRECTORY_SEPARATOR;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-27
          • 2017-03-05
          • 1970-01-01
          • 2014-04-09
          相关资源
          最近更新 更多