Php get host by url

Extract domain, path etc from a full url with PHP

PHP’s parse_url function makes it easy to extract the domain, path and other useful bits of information from a full URL. This can be useful for a variety of purposes, such as when spidering content from a website and needing to extract particular pieces of information from the links in the page.

Returning an associative array

The parse_url function takes the url as the first argument and an optional component value as the second argument. If the second argument is omitted then it returns the found values as an associative array.

This post is at https://www.electrictoolbox.com/php-extract-domain-from-full-url/ and getting the associative array of information from it is done like this:

$url = "https://www.electrictoolbox.com/php-extract-domain-from-full-url/"; $parts = parse_url($url);

Then doing print_r($parts) will output this:

Array ( [scheme] => http [host] => www.electrictoolbox.com [path] => /php-extract-domain-from-full-url/ )

If they are present, the array will also contain values for port, user, pass (i.e. password), query (the query string component of the URL) and fragment (the part after the #).

Returning a string

If all you are after is a single component from the array as a single string, pass the second «component» parameter from the following constants: 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.

Читайте также:  Post multiple select in php

To just get the domain from this blog post’s URL, do this:

$url = "https://www.electrictoolbox.com/php-extract-domain-from-full-url/"; $domain = parse_url($url, PHP_URL_HOST);

PHP Documentation

For more information read the PHP manual page for this function.

Follow up posts

Have a read of my post titled «PHP: get keywords from search engine referer url» to find out how to use the parse_url function in conjunction with the parse_str function to see what query string visitors have entered into a search engine.

Источник

parse_url

Эта функция разбирает URL и возвращает ассоциативный массив, содержащий все компоненты URL, которые в нём присутствуют.

Эта функция не предназначена для проверки на корректность данного URL, она только разбивает его на нижеперечисленные части. Частичные URL также принимаются, parse_url() пытается сделать всё возможное, чтобы разобрать их корректно.

Список параметров

URL для разбора. Недопустимые символы будут заменены на знаки подчёркивания _.

Укажите одну из констант PHP_URL_SCHEME , PHP_URL_HOST , PHP_URL_PORT , PHP_URL_USER , PHP_URL_PASS , PHP_URL_PATH , PHP_URL_QUERY или PHP_URL_FRAGMENT , чтобы получить только конкретный компонент URL в виде строки ( string ). Исключением является указание PHP_URL_PORT , в этом случае возвращаемое значение будет типа integer .

Возвращаемые значения

При разборе значительно некорректных URL-адресов parse_url() может вернуть FALSE .

  • scheme — например, http
  • host
  • port
  • user
  • pass
  • path
  • query — после знака вопроса ?
  • fragment — после знака диеза #

Если параметр component определён, функция parse_url() вернёт строку ( string ) или число ( integer ), в случае PHP_URL_PORT ) вместо массива ( array ). Если запрошенный компонент не существует в данном URL, будет возвращён NULL .

Список изменений

Версия Описание
5.4.7 Исправлено распознавание host, если в URL отсутствовал компонент scheme и использовался ведущий разделитель компонентов.
5.3.3 Удалено E_WARNING , которое сообщало о невозможности разбора URL.
5.1.2 Добавлен параметр component .

Примеры

Пример #1 Пример использования parse_url()

echo parse_url ( $url , PHP_URL_PATH );
?>

Результат выполнения данного примера:

Array ( [scheme] => http [host] => hostname [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor ) /path

Пример #2 Пример использования parse_url() при отсутствии протокола

// До 5.4.7 в path выводилось «//www.example.com/path»
var_dump ( parse_url ( $url ));
?>

Результат выполнения данного примера:

array(3) < ["host"]=>string(15) "www.example.com" ["path"]=> string(5) "/path" ["query"]=> string(17) "googleguy=googley" >

Примечания

Замечание:

Эта функция не работает с относительными URL.

Замечание:

Эта функция предназначена специально для разбора URL-адресов, а не URI. Однако, чтобы соответствовать требованиям обратной совместимости PHP, она делает исключение для протокола file://, в которой допускаются тройные слеши (file:///. ). Для любого другого протокола это недопустимо.

Смотрите также

  • pathinfo() — Возвращает информацию о пути к файлу
  • parse_str() — Разбирает строку в переменные
  • http_build_query() — Генерирует URL-кодированную строку запроса
  • http_build_url()
  • dirname() — Возвращает имя родительского каталога из указанного пути
  • basename() — Возвращает последний компонент имени из указанного пути
  • » RFC 3986

Источник

How to get the domain name from a URL string using PHP

To get the domain name from a full URL string in PHP, you can use the parse_url() function.

The parse_url() function returns various components of the URL you passed as its argument.

The domain name will be returned under the host key as follows:

But keep in mind that the parse_url function will return any subdomain you have in your URL.

Consider the following examples:

The same goes for any kind of subdomains your URL may have:

If you want to remove the subdomain from your URL, then you need to use the PHP Domain Parser library.

The PHP Domain Parser can parse a complex domain name that a regex can’t parse.

Use this library in combination with parse_url() to get components of your domain name as shown below:

You need to have a copy of public_suffix_list.dat that you can download from publicsuffix.org.

To get google.co.uk from the URL, call the registrableDomain() function from the resolved domain name.

You can see the documentation for PHP Domain Parser on its GitHub page.

Now you’ve learned how to get the domain name from a URL using PHP. Nice work!

Take your skills to the next level ⚡️

I’m sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I’ll send new stuff straight into your inbox!

About

Hello! This website is dedicated to help you learn tech and data science skills with its step-by-step, beginner-friendly tutorials.
Learn statistics, JavaScript and other programming languages using clear examples written for people.

Type the keyword below and hit enter

Tags

Click to see all tutorials tagged with:

Источник

How to use the PHP parse_url() Function, With Examples

PHP parse_url

The PHP parse_url() function processes a given URL and divides it into its individual components. Here’s how to use it.

parse_url() is often used to get the host/domain name from a given URL or the path to a remote host file.

Syntax for parse_url()

parse_url ( $url , $component )
  • $url is the URL (e.g., https://www.linuxscrew.com) which you want to parse
    • Relative URLs may not be parsed correctly
    • 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
    • …if you wish to retrieve only one component from the parsed URL
    • FALSE if it is passed a seriously malformed or mistyped URL
    • An associative array with values from the below components table
    • Or, if the $component is specified, the value of that component (or null if it is not present) – will be a String variable unless you are requesting PHP_URL_PORT, which will be an integer

    Note that parse_url() is not intended to handle URIs – just URLs. The terms are often used interchangeably, but they are not the same thing.

    Examples

    Here’s a URL that contains all of the components listed above and the result of running parse_url() on it:

    $url = 'https://username:[email protected]:8080/path/to/file?argument=value#anchor'; var_dump(parse_url($url)); var_dump(parse_url($url, PHP_URL_SCHEME)); var_dump(parse_url($url, PHP_URL_USER)); var_dump(parse_url($url, PHP_URL_PASS)); var_dump(parse_url($url, PHP_URL_HOST)); var_dump(parse_url($url, PHP_URL_PORT)); var_dump(parse_url($url, PHP_URL_PATH)); var_dump(parse_url($url, PHP_URL_QUERY)); var_dump(parse_url($url, PHP_URL_FRAGMENT));

    The above code will output:

    array(8) < ["scheme"]=>string(4) "https" ["host"]=> string(8) "hostname" ["port"]=> int(8080) ["user"]=> string(8) "username" ["pass"]=> string(8) "password" ["path"]=> string(5) "/path/to/file" ["query"]=> string(9) "argument=value" ["fragment"]=> string(6) "anchor" > string(4) "https" string(8) "username" string(8) "password" string(8) "hostname" int(8080) string(5) "/path/to/file" string(9) "argument=value" string(6) "anchor"

    Источник

Оцените статью