parse_url PHP

parse_url($url, $component) – стандартная функция, разбирает URL-адрес на компоненты в виде массива. При разборе некорректных URL-адресов функция может вернуть false.

$url = 'https://snipp.ru/view/151?page=1&sort=1#sample';
$parse = parse_url($url);
print_r($parse);
PHP

Результат

Array
(
    [scheme] => https
    [host] => snipp.ru
    [path] => /view/151
    [query] => page=1&sort=1
    [fragment] => sample
)

C помощью второго параметра функции, можно получить конкретный компонент URL, указав его константу:

$url = 'https://snipp.ru/view/151?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);      // /view/151
echo parse_url($url, PHP_URL_QUERY);     // page=1&sort=1
echo parse_url($url, PHP_URL_FRAGMENT);  // sample
PHP

Кстати, GET параметры будут представлены строкой вида page=1&sort=1, преобразовать ее в массив можно с помощью функции parse_str():

parse_str('page=1&sort=1', $query);
print_r($query);
PHP

Результат

Array
(
    [page] => 1
    [sort] => 1
)

Обратное преобразование массива в GET-строку:

echo http_build_query($query);  // page=1&sort=1
PHP

Обратный parse_url

Следующая функция собирает полученный массив в 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;
}
PHP

Удаление из URL GET-параметров

$url = 'https://snipp.ru/view/151?page=1&sort=1#sample';
$parse = parse_url($url);

unset($parse['query']);
echo reverse_parse_url($parse); // https://snipp.ru/view/151#sample
PHP

Замена домена

$url = 'https://snipp.ru/view/151?page=1&sort=1#sample';
$parse = parse_url($url);

$parse['host'] = 'example.com';
echo reverse_parse_url($parse); // https://example.com/view/151?page=1&sort=1#sample
PHP
17.07.2019, обновлено 07.08.2019 211
Следующая запись RSS канал на PHP

Поделится

Другие публикации

PHP функции для перевода текста, ЧПУ, ссылок и имен файлов в транслит.
В случаях где анонсы не заполнены, сформировать и вывести их можно несколькими способами...
Функции PHP сохраняют текст в файл в кодировке ANSI, чтобы изменить её на UTF-8 нужно к началу текста приписать...
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt