絶対パスに変換する関数

  • 1
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

realpath に似てるけど、ファイルが無くても絶対パスにする。

/** realpath の非実在系関数
 *
 * ex:
 *    >>> print abs_path("/path/to/dir/../arr/to/best");
 *    "/path/to/arr/to/best"
 *
 * @param $str string 整合性合わせたいパス
 * @result string 整合性合わせたパス 
 */
function abs_path (string $str) {
    $fn = preg_split("|/|", $str);
    $stack = array();
    foreach ($fn as $path) {
        if ($path === "..") {
            if (count($stack))
                array_pop($stack);
        }
        else if ($path === ".") {
            // 無視
        }
        else if ($path === "") {
            // 無視
        }
        else {
            array_push($stack, $path);
        }
    }
    return implode("/", $stack);
}