Code
function canonical_path($path) {
$canonical = preg_replace('|/\.?(?=/)|','',$path);
while (($collapsed = preg_replace('|/[^/]+/\.\./|','/',$canonical,1)) !== $canonical) {
$canonical = $collapsed;
}
$canonical = preg_replace('|^/\.\./|','/',$canonical);
return $canonical;
}
$canonical = preg_replace('|/\.?(?=/)|','',$path);
while (($collapsed = preg_replace('|/[^/]+/\.\./|','/',$canonical,1)) !== $canonical) {
$canonical = $collapsed;
}
$canonical = preg_replace('|^/\.\./|','/',$canonical);
return $canonical;
}
