'', 'pass' => '', 'user' => '', 'host' => '', 'port' => null, 'path' => '', 'query' => '', 'fragment' => '', ]; return \array_merge($default, \parse_url($url)); } /** * Un-Parse URL * * Take URL parts and combine them to a valid string * * @param array $url * @param array $ommit * * @return string */ public static function unparse(array $url, array $ommit = []): string { if (isset($url['path']) && \mb_substr($url['path'], 0, 1) !== '/') { $url['path'] = '/' . $url['path']; } $parts = []; $parts['scheme'] = isset($url['scheme']) ? $url['scheme'] . '://' : ''; $parts['host'] = isset($url['host']) ? $url['host'] : ''; $parts['port'] = isset($url['port']) ? ':' . $url['port'] : ''; $parts['user'] = isset($url['user']) ? $url['user'] : ''; $parts['pass'] = isset($url['pass']) ? ':' . $url['pass'] : ''; $parts['pass'] = ($parts['user'] || $parts['pass']) ? $parts['pass'] . '@' : ''; $parts['path'] = isset($url['path']) ? $url['path'] : ''; $parts['query'] = isset($url['query']) && !empty($url['query']) ? '?' . $url['query'] : ''; $parts['fragment'] = isset($url['fragment']) ? '#' . $url['fragment'] : ''; if ($ommit) { foreach ($ommit as $key) { if (isset($parts[ $key ])) { $parts[ $key ] = ''; } } } return $parts['scheme'] . $parts['user'] . $parts['pass'] . $parts['host'] . $parts['port'] . $parts['path'] . $parts['query'] . $parts['fragment']; } /** * Parse Query String * * Convert query string to array * * @param string $query * * @return array */ public static function parseQuery(string $query): array { \parse_str($query, $result); return $result; } /** * Un-Parse Query String * * Convert query string array to string * * @param array $query * * @return string */ public static function unparseQuery(array $query): string { return \http_build_query($query); } }