2012-05-12 56 views
3

我想知道是否有可能得到它从此回荡,也许把它分解PHP获取当前文件目录

所以像一个文件的完整路径: 回声$ currentDir //输出EX:/首页/用户/的public_html/scrips /编码/测试/公顷

则将其分解3目录的下来,输出为:/ home/user中/的public_html /脚本

这可能吗?

+3

是的,这是可能的 – Mischa

+0

你应该说三个目录**而不是向下**。 – alex

回答

5

您可以获取该文件目前正在与__DIR__dirname(__FILE__)执行该目录下< PHP 5.3。

您可以采取一个路径,并通过字符串操作升级几个级别。

$path = implode(
    DIRECTORY_SEPARATOR, 
    array_slice(explode(DIRECTORY_SEPARATOR, $path),0,-3) 
); 

或者,这应该工作...

$path = realpath(
    rtrim($path, DIRECTORY_SEPARATOR) . str_repeat('..' . DIRECTORY_SEPARATOR, 3) 
); 

虽然路径可以通过realpath()转化为不同的字符串(虽然它指向同一位置)。

+0

对不起亚历克斯,你的间距是won-下巴。 –

+0

@JaredFarrish感谢您修复它。我正在用笔记本电脑在即将耗尽电池的纸巾盒上打字。 – alex

+0

没问题,我想这个答案是在胁迫下... –

0

我要做的就是:

  1. 创建的文件类型的类;
  2. 为我的项目定义主文件夹的一些常量,因此它使我的生活更轻松;
  3. 在该类内部创建一个方法来检索路径;
  4. 将函数的结果赋值给属性,也让我的生活更轻松;

如:

class Image { 
    private $temp_path; 
    protected $upload_dir = 'imagens'; 

    public function directory() { 
     return $this->upload_dir . DIRECTORY_SEPARATOR . $this->filename; 
    } 
} 

// If you want only the extension: 

private function _ext() { 
    return strrchr($this->filename, "."); 
} 

当然还有更多的类,更多的,但是这是你需要检索上传文件的路径是什么。你所要做的就是使用面向对象的PhP在文件上传页面中直接设置属性,将它们传递给类,所以它甚至可以存储在数据库中,以便更好地记录和控制文件及其属性。

如果你需要更多关于整个事情的信息,请查询。

祝你好运。