parse_url($url, $component)
– разбирает URL-адрес на компоненты, возвращая их в виде массива. При разборе некорректных URL, функция может вернуть false
.
$url = 'https://snipp.ru/php/parse-url?page=1&sort=1#sample';
$parse = parse_url($url);
print_r($parse);
Результат:
Array
(
[scheme] => https
[host] => snipp.ru
[path] => /php/parse-url
[query] => page=1&sort=1
[fragment] => sample
)
C помощью второго параметра функции, можно получить конкретный компонент URL, указав его константу:
$url = 'https://snipp.ru/php/parse-url?page=1&sort=1#sample';
echo parse_url($url, PHP_URL_SCHEME); // https
echo parse_url($url, PHP_URL_HOST); // snipp.ru
echo parse_url($url, PHP_URL_PORT); // NULL
echo parse_url($url, PHP_URL_USER); // NULL
echo parse_url($url, PHP_URL_PASS); // NULL
echo parse_url($url, PHP_URL_PATH); // /php/parse-url
echo parse_url($url, PHP_URL_QUERY); // page=1&sort=1
echo parse_url($url, PHP_URL_FRAGMENT); // sample
Кстати, GET-параметры будут представлены строкой вида page=1&sort=1
, преобразовать ее в массив можно с помощью функции parse_str()
:
Результат:
Array
(
[page] => 1
[sort] => 1
)
Обратное преобразование массива в GET-строку:
Следующая функция собирает полученный массив в URL (reverse parse url).
function reverse_parse_url(array $parts)
{
$url = '';
if (!empty($parts['scheme'])) {
$url .= $parts['scheme'] . ':';
}
if (!empty($parts['user']) || !empty($parts['host'])) {
$url .= '//';
}
if (!empty($parts['user'])) {
$url .= $parts['user'];
}
if (!empty($parts['pass'])) {
$url .= ':' . $parts['pass'];
}
if (!empty($parts['user'])) {
$url .= '@';
}
if (!empty($parts['host'])) {
$url .= $parts['host'];
}
if (!empty($parts['port'])) {
$url .= ':' . $parts['port'];
}
if (!empty($parts['path'])) {
$url .= $parts['path'];
}
if (!empty($parts['query'])) {
if (is_array($parts['query'])) {
$url .= '?' . http_build_query($parts['query']);
} else {
$url .= '?' . $parts['query'];
}
}
if (!empty($parts['fragment'])) {
$url .= '#' . $parts['fragment'];
}
return $url;
}
Удаление из URL GET-параметров:
$url = 'https://snipp.ru/php/parse-url?page=1&sort=1#sample';
$parse = parse_url($url);
unset($parse['query']);
echo reverse_parse_url($parse); // https://snipp.ru/php/parse-url#sample