public static function combineRelativePathWithBasePath($relativePath, $basePath)
    {
        $relativePath = self::normalizePath($relativePath);
        if ($relativePath == '') {
            return $basePath;
        }
        if ($relativePath[0] == '/') {
            return $relativePath;
        }

        $basePathSegments = explode('/', $basePath);

        preg_match('|^/?(\.\./(?:\./)*)*|', $relativePath, $match);
        $numLevelUp = strlen($match[0]) /3 + 1;
        if ($numLevelUp >= count($basePathSegments)) {
            throw new UriResolverException(sprintf("Unable to resolve URI '%s' from base '%s'", $relativePath, $basePath));
        }

        $basePathSegments = array_slice($basePathSegments, 0, -$numLevelUp);
        $path = preg_replace('|^/?(\.\./(\./)*)*|', '', $relativePath);

        return implode('/', $basePathSegments) . '/' . $path;
    }
public static function combineRelativePathWithBasePath($relativePath, $basePath)
    {
        $relativePath = self::normalizePath($relativePath);
        if ($relativePath == '') {
            return $basePath;
        }
        if ($relativePath[0] == '/') {
            return $relativePath;
        }

        $basePathSegments = explode('/', $basePath);

        preg_match('|^/?(\.\./(?:\./)*)*|', $relativePath, $match);
        $numLevelUp = strlen($match[0]) /3 + 1;
        if ($numLevelUp >= count($basePathSegments)) {
            throw new UriResolverException(sprintf("Unable to resolve URI '%s' from base '%s'", $relativePath, $basePath));
        }

        $basePathSegments = array_slice($basePathSegments, 0, -$numLevelUp);
        $path = preg_replace('|^/?(\.\./(\./)*)*|', '', $relativePath);

        return implode('/', $basePathSegments) . '/' . $path;
    }
public static function combineRelativePathWithBasePath ( $ relativePath , $ basePath ) { $ relativePath = self :: normalizePath ( $ relativePath ) ; if ( $ relativePath == '' ) { return $ basePath ; } if ( $ relativePath [ 0 ] == '/' ) { return $ relativePath ; } $ basePathSegments = explode ( '/' , $ basePath ) ; preg_match ( '|^/?(\.\./(?:\./)*)*|' , $ relativePath , $ match ) ; $ numLevelUp = strlen ( $ match [ 0 ] ) / 3 + 1 ; if ( $ numLevelUp >= count ( $ basePathSegments ) ) { throw new UriResolverException ( sprintf ( "Unable to resolve URI '%s' from base '%s'" , $ relativePath , $ basePath ) ) ; } $ basePathSegments = array_slice ( $ basePathSegments , 0 , - $ numLevelUp ) ; $ path = preg_replace ( '|^/?(\.\./(\./)*)*|' , '' , $ relativePath ) ; return implode ( '/' , $ basePathSegments ) . '/' . $ path ; }
Tries to glue a relative path onto an absolute one

@param string $relativePath
@param string $basePath

@throws UriResolverException

@return string Merged path
Tries to glue a relative path onto an absolute one