本函数区别于realpath,并非基于真是存在的文件系统获取文件路径。故应用范围更为广泛一些,即使文件系统中没有该文件,也可以获得文件的真实路径。

/**
 * 整理文件路径
 * 作者: 若海[mail@anrip.com]
 */
function path_tidy($path) {
    $tidy = array();
    $path = strtr($path, '\\', '/');
    foreach(explode('/', $path) as $i => $item) {
        if($item == '' || $item == '.' ) {
            continue;
        }
        if($item == '..' && end($tidy) != '..' && $i > 0) {
            array_pop($tidy);
            continue;
        }
        $tidy[] = $item;
    }
    return ($path[0]=='/'?'/':'').implode('/', $tidy);
}

//下例将输出/a/b/d/e
echo path_tidy('/u/../a/./b/c/../d/e/./');

标签: php

添加新评论