preg_replace和regexp以获取域

问题描述 投票:-1回答:1

我有一个从HTTP_HOST返回干净域的代码

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

但是如果域名类似于somedomain.co.uk,则仅返回co.uk。在这种情况下,您能否帮助我重新制作RegExp以返回正确的域?非常感谢!

php preg-replace
1个回答
1
投票

您应该尝试此:

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>';
}
© www.soinside.com 2019 - 2024. All rights reserved.