Source for file URIParser.php
Documentation is available at URIParser.php
* Parses a URI into the components and fragment identifier as specified
* Instance of HTMLPurifier_PercentEncoder to do normalization with.
* @param $uri string URI to parse
* @return HTMLPurifier_URI representation of URI. This representation has
* not been validated yet and may not conform to RFC.
public function parse($uri) {
// Regexp is as per Appendix B.
// Note that ["<>] are an addition to the RFC's recommended
// characters, because they represent external delimeters.
'(([^:/?#"<>]+):)?'.
// 2. Scheme
'(//([^/?#"<>]*))?'.
// 4. Authority
'([^?#"<>]*)'.
// 5. Path
'(\?([^#"<>]*))?'.
// 7. Query
'(#([^"<>]*))?'.
// 8. Fragment
if (!$result) return false; // *really* invalid URI
$scheme =
!empty($matches[1]) ?
$matches[2] :
null;
$authority =
!empty($matches[3]) ?
$matches[4] :
null;
$path =
$matches[5]; // always present, can be empty
$query =
!empty($matches[6]) ?
$matches[7] :
null;
$fragment =
!empty($matches[8]) ?
$matches[9] :
null;
// further parse authority
if ($authority !==
null) {
$r_authority =
"/^((.+?)@)?(\[[^\]]+\]|[^:]*)(:(\d*))?/";
$userinfo =
!empty($matches[1]) ?
$matches[2] :
null;
$host =
!empty($matches[3]) ?
$matches[3] :
'';
$port =
!empty($matches[4]) ? (int)
$matches[5] :
null;
$port =
$host =
$userinfo =
null;
$scheme, $userinfo, $host, $port, $path, $query, $fragment);
Documentation generated on Thu, 19 Jun 2008 18:50:30 -0400 by phpDocumentor 1.4.2