PHP获取当前文件目录

3
我想知道是否有可能获取被回显的文件的完整路径,然后将其拆分。例如: echo $currentDir //输出:/home/user/public_html/scrips/code/test/ha
然后将它拆分到三个目录下,使输出为:/home/user/public_html/scripts。
这可行吗?

你应该说三个目录,而不是下面。 - alex
2个回答

5

在 PHP 5.3 版本之前,你可以使用 __DIR__dirname(__FILE__) 来获取当前执行文件所在的目录。

你可以使用字符串操作来获取当前路径并向上几级目录。

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

或者,这个应该可以工作……

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

虽然路径可以通过realpath()变成另一个字符串,但它仍将指向同一位置。

抱歉,Alex,你的间距有些不对。 - Jared Farrish
@JaredFarrish 感谢您的修复。我正在用一台笔记本电脑打字,它放在一个即将耗尽电池的纸巾盒上。 - alex
还有一个问题,我如何将最终结果拆分为只输出:scripts?谢谢。 - MicMac
@MicMac 检查在目录分隔符上拆分后的结果。那么很明显了。 - alex

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设置属性,将它们传递给该类,以便更好地记录和控制文件及其属性,甚至可以存储在您的数据库中。

如果您需要更多关于整个过程的信息,请随时提问。

祝您好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接