SimplePie_IRI::absolutize PHP Method

absolutize() public method

Create a new IRI object by resolving a relative IRI
public absolutize ( SimplePie_IRI $base, string $relative ) : SimplePie_IRI
$base SimplePie_IRI Base IRI
$relative string Relative IRI
return SimplePie_IRI
    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 {
                // No base URL, just return the relative URL
                $target = $relative;
            }
        } else {
            $target = $base;
        }
        return $target;
    }

Usage Example

コード例 #1
0
ファイル: Misc.php プロジェクト: kadrim1/metsayhistu
 public static function absolutize_url($relative, $base)
 {
     $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative);
     if ($iri === false) {
         return false;
     }
     return $iri->get_uri();
 }
All Usage Examples Of SimplePie_IRI::absolutize