preg_replace и regexp, чтобы получить домен - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть код, который возвращает чистый домен из HTTP_HOST

preg_replace('#^(.*\.)?(.*\..*)$#', '$2', $_SERVER['HTTP_HOST'])

Но в случае, если домен похож на somedomain.co.uk - он возвращает только co.uk. Можете ли вы помочь мне переделать RegExp, чтобы вернуть правильный домен в этом случае? Большое спасибо!

1 Ответ

1 голос
/ 14 февраля 2020

Вы должны попробовать это:

preg_replace('#^(https?:\/\/)?(www\d?\.)?([^\/\?]+)(.*)#', '$3', $url)

Работает в следующих случаях:

<?php 

$urls = [
    'https://www.somedomain.co.uk', 
    'http://www.somedomain.co.uk', 
    'www.somedomain.co.uk/something', 
    'www.somedomain.co.uk?q=1',
    'www2.somedomain.co.uk/something',
    'somedomain.co.uk',
    '192.168.1.1/something?q=1&x=2',
];

foreach($urls as $url) {
    echo preg_replace('#^(https?:\/\/)?(www\d?\.)?([^\/\?]+)(.*)#', '$3', $url) . '<br>';
}
...