<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2022/8/10
 * Time: 19:31
 */

namespace file;


class PathHelper
{

    /**
     * 提取路径中的文件名（包含后缀）
     */
    public static function getFilename($path)
    {
        return pathinfo($path)['basename'];
    }

    /**
     * 提取文件后缀
     * @param $path [文件路径、url]
     * @return mixed
     */
    public static function getExt($path)
    {
        return pathinfo($path)['extension']; // 如果有参数会得到这样html?xxxx
    }

    /**
     * 提取路径中的目录路径
     */
    public static function getDir($path)
    {
        // 测试结果，短的路径，获取的结果不能用于拼接路径使用
//      /dcyy/          =  \
//      /dcyy           =  \
//      ./dcyy          =  .
//      bbbb            =  .
//      /aaaa/bbbb      =  /aaaa
//      /aaaa/bbbb/cc   =  /aaaa/bbbb
//      ./aaaa/bbbb/cc  =  ./aaaa/bbbb
//      ../aaaa/bbbb/cc =  ../aaaa/bbbb
//C:/Windows/System32/etc    = C:/Windows/System32
//http://my.com/post/20.html = http://my.com/post
        return dirname($path);//pathinfo($path)['dirname']
    }

    /**
     * 提取父目录路径
     */
    public static function getParentDir($path, $separator = DS)
    {
        $path = deleteEndDS($path, $separator);
        $res = explode($separator, $path);
        if (is_array($res)) {
            $end = end($res);
            //去除最后一个节点，使用preg_replace替换最后一个匹配到的
            $endres = preg_replace("~$end(?!.*$end)~", '', $path);
            return $separator == $endres ? $endres : deleteEndDS($endres, $separator);
        }
        return $res;
    }
}