static function _parse($trust_root)
    {
        $trust_root = Auth_OpenID_urinorm($trust_root);
        if ($trust_root === null) {
            return false;
        }

        if (preg_match("/:\/\/[^:]+(:\d+){2,}(\/|$)/", $trust_root)) {
            return false;
        }

        $parts = @parse_url($trust_root);
        if ($parts === false) {
            return false;
        }

        $required_parts = array('scheme', 'host');
        $forbidden_parts = array('user', 'pass', 'fragment');
        $keys = array_keys($parts);
        if (array_intersect($keys, $required_parts) != $required_parts) {
            return false;
        }

        if (array_intersect($keys, $forbidden_parts) != array()) {
            return false;
        }

        if (!preg_match(Auth_OpenID___HostSegmentRe, $parts['host'])) {
            return false;
        }

        $scheme = strtolower($parts['scheme']);
        $allowed_schemes = array('http', 'https');
        if (!in_array($scheme, $allowed_schemes)) {
            return false;
        }
        $parts['scheme'] = $scheme;

        $host = strtolower($parts['host']);
        $hostparts = explode('*', $host);
        switch (count($hostparts)) {
        case 1:
            $parts['wildcard'] = false;
            break;
        case 2:
            if ($hostparts[0] ||
                ($hostparts[1] && substr($hostparts[1], 0, 1) != '.')) {
                return false;
            }
            $host = $hostparts[1];
            $parts['wildcard'] = true;
            break;
        default:
            return false;
        }
        if (strpos($host, ':') !== false) {
            return false;
        }

        $parts['host'] = $host;

        if (isset($parts['path'])) {
            $path = strtolower($parts['path']);
            if (substr($path, 0, 1) != '/') {
                return false;
            }
        } else {
            $path = '/';
        }

        $parts['path'] = $path;
        if (!isset($parts['port'])) {
            $parts['port'] = false;
        }


        $parts['unparsed'] = $trust_root;

        return $parts;
    }
static function _parse($trust_root)
    {
        $trust_root = Auth_OpenID_urinorm($trust_root);
        if ($trust_root === null) {
            return false;
        }

        if (preg_match("/:\/\/[^:]+(:\d+){2,}(\/|$)/", $trust_root)) {
            return false;
        }

        $parts = @parse_url($trust_root);
        if ($parts === false) {
            return false;
        }

        $required_parts = array('scheme', 'host');
        $forbidden_parts = array('user', 'pass', 'fragment');
        $keys = array_keys($parts);
        if (array_intersect($keys, $required_parts) != $required_parts) {
            return false;
        }

        if (array_intersect($keys, $forbidden_parts) != array()) {
            return false;
        }

        if (!preg_match(Auth_OpenID___HostSegmentRe, $parts['host'])) {
            return false;
        }

        $scheme = strtolower($parts['scheme']);
        $allowed_schemes = array('http', 'https');
        if (!in_array($scheme, $allowed_schemes)) {
            return false;
        }
        $parts['scheme'] = $scheme;

        $host = strtolower($parts['host']);
        $hostparts = explode('*', $host);
        switch (count($hostparts)) {
        case 1:
            $parts['wildcard'] = false;
            break;
        case 2:
            if ($hostparts[0] ||
                ($hostparts[1] && substr($hostparts[1], 0, 1) != '.')) {
                return false;
            }
            $host = $hostparts[1];
            $parts['wildcard'] = true;
            break;
        default:
            return false;
        }
        if (strpos($host, ':') !== false) {
            return false;
        }

        $parts['host'] = $host;

        if (isset($parts['path'])) {
            $path = strtolower($parts['path']);
            if (substr($path, 0, 1) != '/') {
                return false;
            }
        } else {
            $path = '/';
        }

        $parts['path'] = $path;
        if (!isset($parts['port'])) {
            $parts['port'] = false;
        }


        $parts['unparsed'] = $trust_root;

        return $parts;
    }
static function _parse ( $ trust_root ) { $ trust_root = Auth_OpenID_urinorm ( $ trust_root ) ; if ( $ trust_root === null ) { return false ; } if ( preg_match ( "/:\/\/[^:]+(:\d+){2,}(\/|$)/" , $ trust_root ) ) { return false ; } $ parts = @ parse_url ( $ trust_root ) ; if ( $ parts === false ) { return false ; } $ required_parts = array ( 'scheme' , 'host' ) ; $ forbidden_parts = array ( 'user' , 'pass' , 'fragment' ) ; $ keys = array_keys ( $ parts ) ; if ( array_intersect ( $ keys , $ required_parts ) != $ required_parts ) { return false ; } if ( array_intersect ( $ keys , $ forbidden_parts ) != array ( ) ) { return false ; } if ( ! preg_match ( Auth_OpenID___HostSegmentRe , $ parts [ 'host' ] ) ) { return false ; } $ scheme = strtolower ( $ parts [ 'scheme' ] ) ; $ allowed_schemes = array ( 'http' , 'https' ) ; if ( ! in_array ( $ scheme , $ allowed_schemes ) ) { return false ; } $ parts [ 'scheme' ] = $ scheme ; $ host = strtolower ( $ parts [ 'host' ] ) ; $ hostparts = explode ( '*' , $ host ) ; switch ( count ( $ hostparts ) ) { case 1 : $ parts [ 'wildcard' ] = false ; break ; case 2 : if ( $ hostparts [ 0 ] || ( $ hostparts [ 1 ] && substr ( $ hostparts [ 1 ] , 0 , 1 ) != '.' ) ) { return false ; } $ host = $ hostparts [ 1 ] ; $ parts [ 'wildcard' ] = true ; break ; default : return false ; } if ( strpos ( $ host , ':' ) !== false ) { return false ; } $ parts [ 'host' ] = $ host ; if ( isset ( $ parts [ 'path' ] ) ) { $ path = strtolower ( $ parts [ 'path' ] ) ; if ( substr ( $ path , 0 , 1 ) != '/' ) { return false ; } } else { $ path = '/' ; } $ parts [ 'path' ] = $ path ; if ( ! isset ( $ parts [ 'port' ] ) ) { $ parts [ 'port' ] = false ; } $ parts [ 'unparsed' ] = $ trust_root ; return $ parts ; }
Parse a URL into its trust_root parts.

@static

@access private

@param string $trust_root The url to parse

@return mixed $parsed Either an associative array of trust root
parts or false if parsing failed.
Parse a URL into its trust_root parts .