【问题标题】:Echo the ending part or last folder of $_SERVER['DOCUMENT_ROOT'] in PHP在 PHP 中回显 $_SERVER['DOCUMENT_ROOT'] 的结尾部分或最后一个文件夹
【发布时间】:2015-07-15 18:59:29
【问题描述】:

我需要使用$_SERVER['DOCUMENT_ROOT']; 来扫描文件和文件夹以显示在我的导航菜单中。

假设我的根目录位于/home/user/public_html/website/

我是这样回显根目录的:

echo $_SERVER['DOCUMENT_ROOT'];

它将显示/home/user/public_html/website/

这是我在根目录中回显文件夹的方式:

echo $_SERVER['DOCUMENT_ROOT'].'about/';

它将显示/home/user/public_html/website/about/

问题:我怎样才能剥离它显示的所有内容,一直到根文件夹和/或子文件夹。

示例:如果我回显$_SERVER['DOCUMENT_ROOT'],我希望它显示为/,而不是整个/home/user/public_html/website/ 路径。

如果我回显一个子文件夹,我希望它显示为/about/ 而不是/home/user/public_html/website/about/

那么,我怎样才能让它只回显$_SERVER['DOCUMENT_ROOT']; 的结尾部分而不是整个目录路径?

我已经尝试过dirnamebasename,但它们都不能满足我的需求。我已经考虑过字符串替换,但是否有更容易添加到$_SERVER['DOCUMENT_ROOT'] 的内容只会回显根文件夹或根文件夹加上子文件夹?

更新

我最终使用了 anant kumar singh 的以下答案,但使用 preg_split 而不是 explode 对其进行了调整,因为 preg_split 可以采用多个字符串分隔符,而 explode 只能采用 1 个。

$newArray = preg_split( " (-in/|-ca/|-co/) ", dirname($_SERVER['DOCUMENT_ROOT']) );
if(count($newArray)>1){
    echo '/'.$newArray[1].'/';
    }else{
        echo '/';
    }

如果您知道更好的方法来完成我正在尝试做的事情,请在下面发布您的答案。

【问题讨论】:

  • 你试过了吗?
  • 是的,到目前为止,我已经尝试了很多东西,但还没有找到任何东西。目录名,基本名。除了这两个之外还有其他东西吗?
  • ^ 1. 将您的尝试/工作添加到您的问题中! 2.看看explode()
  • 这很混乱。一旦你说结束文档根目录的一部分,在另一边你说你想显示根文件夹/?你能区分一下吗?你想只是回应它或将其用于其他目的?
  • 与回显完整路径 /home/user/public_html/website/ (其中 /website/ 是根文件夹)相反,我想回显 / 这是文件夹网站后的最后一个斜杠。但是,如果我要回显一个子目录,例如关于页面 /home/user/public_html/website/about/,我希望它显示为 /about/

标签: php explode preg-split document-root


【解决方案1】:

您可以通过以下方式进行爆炸:--

$newArray = explode('website/',$_SERVER['DOCUMENT_ROOT']);
 if(count($newArray)>1){
   echo "/".$newArray[1];
}else{
    echo '/';
}

正如你已经说过 preg_split 为你完成了这项工作:-

$newArray = preg_split( " (-in/|-ca/|-co/) ", dirname($_SERVER['DOCUMENT_ROOT']) ); if(count($newArray)>1){ echo "/".$newArray[1]."/"; }else{ echo '/'; }

注意:- 不要惊慌。我不会相信你的功劳。我只是为了未来人民的目的而这样做的。如果你把它作为答案,那么我会删除它。

【讨论】:

  • 我稍微调整了你的答案并使用了 preg_split 因为我需要在多个分隔符上展开。
  • 你可以把你的答案放在这里并标记出来。它将帮助其他人找到解决方案。
  • 我稍微调整了您的答案,因为explode 不能使用超过1 个字符串分隔符,但preg_split 可以使用多个。 $newArray = preg_split( " (-in/|-ca/|-co/) ", dirname($_SERVER['DOCUMENT_ROOT']) ); if(count($newArray)>1){ echo "/".$newArray[1]."/"; }else{ echo '/'; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
相关资源
最近更新 更多