1. 程式人生 > >php 模擬返回url上一層目錄

php 模擬返回url上一層目錄

    function parseUrl($url, $path)
    {
        if (preg_match('/^javascript/', $path)) {
            return $path;
        } else {
            if (strpos($path, '/') === 0) {
                $r      = parse_url($url);
                $newurl = $r['scheme'] . '://' . $r['host'];
                return
parseUrl($newurl, ltrim($path, '/')); } $url = rtrim($url, '/') . '/'; do { preg_match('/^(?<current>[^\/]*)(?<other>.*)$/', $path, $matches); if ($matches['current'] === '..') { $explode = explode('/', $url
); if (count($explode) > 4) { array_pop($explode); array_pop($explode); $url = implode('/', $explode) . '/'; } } else if ($matches['current'] === '.') { $explode
= explode('/', $url); if (count($explode) > 4) { array_pop($explode); $url = implode('/', $explode) . '/'; } } else { $url .= $matches['current'] . '/'; } $path = ltrim($matches['other'], '/'); } while(!empty($matches['other'])); return rtrim($url, '/'); } }
    // 測試例項
    $url  = "http://jjx.com/hello/world/this/is";
    $path = '../../hello.html';
    echo parseUrl($url, $path);