ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
HTMLPurifier_URIParser Class Reference

Parses a URI into the components and fragment identifier as specified by RFC 3986. More...

+ Collaboration diagram for HTMLPurifier_URIParser:

Public Member Functions

 __construct ()
 
 parse ($uri)
 Parses a URI. More...
 

Protected Attributes

 $percentEncoder
 Instance of HTMLPurifier_PercentEncoder to do normalization with. More...
 

Detailed Description

Parses a URI into the components and fragment identifier as specified by RFC 3986.

Definition at line 7 of file URIParser.php.

Constructor & Destructor Documentation

◆ __construct()

HTMLPurifier_URIParser::__construct ( )

Definition at line 15 of file URIParser.php.

16  {
17  $this->percentEncoder = new HTMLPurifier_PercentEncoder();
18  }
Class that handles operations involving percent-encoding in URIs.

Member Function Documentation

◆ parse()

HTMLPurifier_URIParser::parse (   $uri)

Parses a URI.

Parameters
$uristring URI to parse
Returns
HTMLPurifier_URI representation of URI. This representation has not been validated yet and may not conform to RFC.

Definition at line 26 of file URIParser.php.

References $path, $query, $result, and array.

27  {
28  $uri = $this->percentEncoder->normalize($uri);
29 
30  // Regexp is as per Appendix B.
31  // Note that ["<>] are an addition to the RFC's recommended
32  // characters, because they represent external delimeters.
33  $r_URI = '!'.
34  '(([a-zA-Z0-9\.\+\-]+):)?'. // 2. Scheme
35  '(//([^/?#"<>]*))?'. // 4. Authority
36  '([^?#"<>]*)'. // 5. Path
37  '(\?([^#"<>]*))?'. // 7. Query
38  '(#([^"<>]*))?'. // 8. Fragment
39  '!';
40 
41  $matches = array();
42  $result = preg_match($r_URI, $uri, $matches);
43 
44  if (!$result) return false; // *really* invalid URI
45 
46  // seperate out parts
47  $scheme = !empty($matches[1]) ? $matches[2] : null;
48  $authority = !empty($matches[3]) ? $matches[4] : null;
49  $path = $matches[5]; // always present, can be empty
50  $query = !empty($matches[6]) ? $matches[7] : null;
51  $fragment = !empty($matches[8]) ? $matches[9] : null;
52 
53  // further parse authority
54  if ($authority !== null) {
55  $r_authority = "/^((.+?)@)?(\[[^\]]+\]|[^:]*)(:(\d*))?/";
56  $matches = array();
57  preg_match($r_authority, $authority, $matches);
58  $userinfo = !empty($matches[1]) ? $matches[2] : null;
59  $host = !empty($matches[3]) ? $matches[3] : '';
60  $port = !empty($matches[4]) ? (int) $matches[5] : null;
61  } else {
62  $port = $host = $userinfo = null;
63  }
64 
65  return new HTMLPurifier_URI(
66  $scheme, $userinfo, $host, $port, $path, $query, $fragment);
67  }
$path
Definition: aliased.php:25
$result
Create styles array
The data for the language used.
HTML Purifier&#39;s internal representation of a URI.
Definition: URI.php:11

Field Documentation

◆ $percentEncoder

HTMLPurifier_URIParser::$percentEncoder
protected

Instance of HTMLPurifier_PercentEncoder to do normalization with.

Definition at line 13 of file URIParser.php.


The documentation for this class was generated from the following file: