public static function absolutize($base, $relative) { $relative = (string) $relative; if ($relative !== '') { $relative = new SimplePie_IRI($relative); if ($relative->get_scheme() !== null) { $target = $relative; } elseif ($base->get_iri() !== null) { if ($relative->get_authority() !== null) { $target = $relative; $target->set_scheme($base->get_scheme()); } else { $target = new SimplePie_IRI(''); $target->set_scheme($base->get_scheme()); $target->set_userinfo($base->get_userinfo()); $target->set_host($base->get_host()); $target->set_port($base->get_port()); if ($relative->get_path() !== null) { if (strpos($relative->get_path(), '/') === 0) { $target->set_path($relative->get_path()); } elseif (($base->get_userinfo() !== null || $base->get_host() !== null || $base->get_port() !== null) && $base->get_path() === null) { $target->set_path('/' . $relative->get_path()); } elseif (($last_segment = strrpos($base->get_path(), '/')) !== false) { $target->set_path(substr($base->get_path(), 0, $last_segment + 1) . $relative->get_path()); } else { $target->set_path($relative->get_path()); } $target->set_query($relative->get_query()); } else { $target->set_path($base->get_path()); if ($relative->get_query() !== null) { $target->set_query($relative->get_query()); } elseif ($base->get_query() !== null) { $target->set_query($base->get_query()); } } } $target->set_fragment($relative->get_fragment()); } else { $target = $relative; } } else { $target = $base; } return $target; }
public static function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '') { $iri = new SimplePie_IRI(''); $iri->set_scheme($scheme); $iri->set_authority($authority); $iri->set_path($path); $iri->set_query($query); $iri->set_fragment($fragment); return $iri->get_iri(); }