regex — получает доменное имя без www и .com в переполнении стека

Мне нужно получить доменное имя с URL-адреса, исключая «www» и «.com» или «.co.uk» или что-либо другое.

Пример-

У меня есть следующие URL-адреса, как-

http://www.example.com
http://www.example.co.uk
http://subdomain.example.com
http://subdomain.example.co.uk

Там будет что-нибудь в «.com», «.org», «.co.in», «.co.uk».

1

Решение

Вы должны использовать функцию PHP parse_url () в сочетании с str_replace() или регулярное выражение, или, может быть, даже взорваться. Это зависит от нескольких вещей:

Что следует отметить:

  • Всегда ли будет поддомен?
  • Будет ли конкретный список разрешенных поддоменов?

Я бы сделал что-то вроде этого:

<?php
$url = 'http://www.something.com';
$parts = explode('.', parse_url($url, PHP_URL_HOST));
echo $parts[1]; // "something"
1

Другие решения

(?:https?:\/\/)?(?:www\.)?(.*)\.(?=[\w.]{3,4})

Попробуйте это. См. Демонстрацию. Захватите захват.

http://regex101.com/r/bW3aR1/2

1

Я стараюсь, это работает для меня.

    $original_url="http://subdomain.example.co.uk"; //try with all urls above

$pieces = parse_url($original_url);
$domain = isset($pieces['host']) ? $pieces['host'] : '';
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain,    $regs)) {
echo strstr( $regs['domain'], '.', true );
}

Output- example

Я получил это отсюда
Получить доменное имя из полного URL

1
По вопросам рекламы [email protected]