服务器路径,减去当前文件夹

时间:2011-03-25 15:23:06

标签: php path

好的。

认为我这样做太复杂了,并且有一个更简单的解决方案。我需要获取当前服务器路径$ _SERVER ['DOCUMENT_ROOT'];减去当前文件夹。

$full_path = $_SERVER['DOCUMENT_ROOT'];
$current_folder = strrchr( $full_path, '/' ); 
$strlength = strlen( $current_folder ) - 1;
$pathlength = strlen( $full_path );
$newlength = $pathlength - $strlength;
$newpath = substr( $full_path, 0, $newlength );

此代码有效,但我认为这可能有点过分。

谢谢, 皮特

6 个答案:

答案 0 :(得分:3)

dirname()非常方便。
不知道你要求的路径是什么,要给你们两个:

$above_root    = dirname($_SERVER['DOCUMENT_ROOT'])."/";
$above_current = dirname(dirname(__FILE__))."/";

答案 1 :(得分:2)

使用函数realpath并通过添加/../:

将一个文件夹放到更高的位置
$newpath = realpath($_SERVER["DOCUMENT_ROOT"] . "/../");

答案 2 :(得分:0)

难道你不能这样做吗?它并不是很漂亮,但就我所知,你可以将..追加到路径上。

$parent =  $_SERVER['DOCUMENT_ROOT'].'/../';

您可能想要检查$_SERVER['DOCUMENT_ROOT'];最后是否包含目录分隔符,以及是否需要添加目录分隔符。

答案 3 :(得分:0)

尝试:

dirname($_SERVER['DOCUMENT_ROOT']);

PHP在处理路径和文件系统时提供所有类型的功能:http://www.php.net/manual/en/ref.filesystem.php

答案 4 :(得分:0)

看看这个:

$path = $_SERVER['DOCUMENT_ROOT'];
$dirs = explode('\\', $path);
$pathWithoutDir = array_slice($dirs, 0, count($dirs) - 1);

我猜上面的脏代码会起作用。您也可以将$_SERVER['DOCUMENT_ROOT'];更改为__DIR__,其等于dirname(__FILE__)

编辑:代码更新。

答案 5 :(得分:0)

$ newpath = preg_replace(“/ [^ \ /] + $ /”,“”,$ _SERVER ['DOCUMENT_ROOT']);