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);