入门 - 目录与文件路径计算

  • 作者:KK

  • 发表日期:2016.12.28


经常要处理文件和目录的问题时就要用到路径计算

dirname 获取上一级路径

$path = 'D:\a\b\c';
echo dirname($path); //  D:/a/b
echo dirname('D:\a\b.php'); //  D:/a   文件路径也可以

但有个问题,如果有上级目录描述符的话,它不会处理这个细节,看这个例子:

echo dirname('D:\a\b\..\c');

结果是D:\a\b\..,首先我们自己思考一下,D:\a\b..\c实际上是D:\a\c,则它的上一级目录应该是D:\ a,其实计算结果D:\a\b..与它也是等效的,只是dirname返回的值比较单纯,不做太多的计算处理工作

对了,dirname不会判断路径是否存在,只是帮咱们计算一下路径而已


realpath 计算绝对路径

这个函数很有用,而且它会核实真实路径:

echo realpath(__DIR__ . '/../../'); // 当前目录的 上一级 再上一级
echo realpath('D:\h\i\..\j\k'); //输出空值,因为路径不存在,除非你创建相关目录让它们存在

它输出的值不会带有..这个上级目录符号,而是经过关系计算得出一个最终的绝对路径


获取路径的信息

$file = 'D:/a/b/c.php';
$fileInfo = pathinfo($file);

echo $fileInfo['dirname']; // D:/a/b    目录
echo $fileInfo['basename']; // c.php    文件名
echo $fileInfo['extension']; // php     文件后缀
echo $fileInfo['filename']; // c      文件前缀

一般我用这个函数更多是为了获取文件后缀