145 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Safe;
 | |
| 
 | |
| use Safe\Exceptions\UrlException;
 | |
| 
 | |
| /**
 | |
|  * Decodes a base64 encoded data.
 | |
|  *
 | |
|  * @param string $data The encoded data.
 | |
|  * @param bool $strict If the strict parameter is set to TRUE
 | |
|  * then the base64_decode function will return
 | |
|  * FALSE if the input contains character from outside the base64
 | |
|  * alphabet. Otherwise invalid characters will be silently discarded.
 | |
|  * @return string Returns the decoded data. The returned data may be
 | |
|  * binary.
 | |
|  * @throws UrlException
 | |
|  *
 | |
|  */
 | |
| function base64_decode(string $data, bool $strict = false): string
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \base64_decode($data, $strict);
 | |
|     if ($result === false) {
 | |
|         throw UrlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * get_headers returns an array with the headers sent
 | |
|  * by the server in response to a HTTP request.
 | |
|  *
 | |
|  * @param string $url The target URL.
 | |
|  * @param int $format If the optional format parameter is set to non-zero,
 | |
|  * get_headers parses the response and sets the
 | |
|  * array's keys.
 | |
|  * @param resource $context A valid context resource created with
 | |
|  * stream_context_create.
 | |
|  * @return array Returns an indexed or associative array with the headers.
 | |
|  * @throws UrlException
 | |
|  *
 | |
|  */
 | |
| function get_headers(string $url, int $format = 0, $context = null): array
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($context !== null) {
 | |
|         $result = \get_headers($url, $format, $context);
 | |
|     } else {
 | |
|         $result = \get_headers($url, $format);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw UrlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * This function parses a URL and returns an associative array containing any
 | |
|  * of the various components of the URL that are present.
 | |
|  * The values of the array elements are not URL decoded.
 | |
|  *
 | |
|  * This function is not meant to validate
 | |
|  * the given URL, it only breaks it up into the above listed parts. Partial
 | |
|  * URLs are also accepted, parse_url tries its best to
 | |
|  * parse them correctly.
 | |
|  *
 | |
|  * @param string $url The URL to parse. Invalid characters are replaced by
 | |
|  * _.
 | |
|  * @param int $component Specify one of PHP_URL_SCHEME,
 | |
|  * PHP_URL_HOST, PHP_URL_PORT,
 | |
|  * PHP_URL_USER, PHP_URL_PASS,
 | |
|  * PHP_URL_PATH, PHP_URL_QUERY
 | |
|  * or PHP_URL_FRAGMENT to retrieve just a specific
 | |
|  * URL component as a string (except when
 | |
|  * PHP_URL_PORT is given, in which case the return
 | |
|  * value will be an integer).
 | |
|  * @return mixed On seriously malformed URLs, parse_url.
 | |
|  *
 | |
|  * If the component parameter is omitted, an
 | |
|  * associative array is returned. At least one element will be
 | |
|  * present within the array. Potential keys within this array are:
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * scheme - e.g. http
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * host
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * port
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * user
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * pass
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * path
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * query - after the question mark ?
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * fragment - after the hashmark #
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * If the component parameter is specified,
 | |
|  * parse_url returns a string (or an
 | |
|  * integer, in the case of PHP_URL_PORT)
 | |
|  * instead of an array. If the requested component doesn't exist
 | |
|  * within the given URL, NULL will be returned.
 | |
|  * @throws UrlException
 | |
|  *
 | |
|  */
 | |
| function parse_url(string $url, int $component = -1)
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \parse_url($url, $component);
 | |
|     if ($result === false) {
 | |
|         throw UrlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 |