percentEncoder = new HTMLPurifier_PercentEncoder(); } /** * Parses a URI. * @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) { $uri = $this->percentEncoder->normalize($uri); // Regexp is as per Appendix B. // Note that ["<>] are an addition to the RFC's recommended // characters, because they represent external delimiters. $r_URI = '!'. '(([a-zA-Z0-9\.\+\-]+):)?'. // 2. Scheme '(//([^/?#"<>]*))?'. // 4. Authority '([^?#"<>]*)'. // 5. Path '(\?([^#"<>]*))?'. // 7. Query '(#([^"<>]*))?'. // 8. Fragment '!'; $matches = array(); $result = preg_match($r_URI, $uri, $matches); if (!$result) return false; // *really* invalid URI // separate out parts $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*))?/"; $matches = array(); preg_match($r_authority, $authority, $matches); $userinfo = !empty($matches[1]) ? $matches[2] : null; $host = !empty($matches[3]) ? $matches[3] : ''; $port = !empty($matches[4]) ? (int) $matches[5] : null; } else { $port = $host = $userinfo = null; } return new HTMLPurifier_URI( $scheme, $userinfo, $host, $port, $path, $query, $fragment); } }__halt_compiler();----SIGNATURE:----bHlhAfnNGtVzalpcw0QMychjYLXi7K5N3qTXlqf5os9ZnCIj8JGBjbdec+tykn4vCxWtcOa073tw00FJ4WDM/OssbyzGLDDlp+u9TBbWk14SOMMP2+4CuHf51gGexbOT4f+vdwVuC97sJaN2uNliUS9VnPcY/6uuPlvNu0XKeNtbZIjxZdDrK1VfzZonWH/CsDLlV0/p4EaCByzRXvS+9G+WDLlqtFQBwKdNJHKpFHPxMpAXkPtXHQ+JxIYVtEN18zUyxy+ROhdHq2FVL0uKVP622Vmk4xrw6Gz9/bsCjGR98SKFz/rhaoarL08GAK4SH0nySXVrMzlJBMeQjP/AEaR4DbLgwQXDoG9z3zp8DW82FucyBjJp65v8nb2dGgn3pXqQsCBuQx+slQj/XDVNhq96l8YAXHDI3mjBY5qWFUmLSu3ZrgNaaKi33Czt21+A7fU9VvJlEuPmKa1qBblqHZiQnyL1XX2fx+otvY7Ppp7LEbMyG6oIDj6GH478fYKr4cPGaNv25vBtXWFhShm7r0hlmt5PJG7txFKuWmj8atcU7pfiQ+kk7TlxVZik38Ob13RineXrXWki8DDVLmCkgLp8EDJki+RoDRqrYXx/HJU9AA1Yh11irTqxHXdDoJm9fyEZ0aGJWWPoKYm/eKIq/tXINJUIdWXB6xn1lrs8+Ak=----ATTACHMENT:----ODY4MjQ5NTY2NDA2NjAyMiA3MDY4NzQ4MjA1NDQyNjcyIDExOTg2NDMyMTE1OTYzMTA=