preg_replace 和正则表达式来获取域
preg_replace and regexp to get the domain
我有一个代码 return 来自 HTTP_HOST
的干净域
preg_replace('#^(.*\.)?(.*\..*)$#', '', $_SERVER['HTTP_HOST'])
但如果域类似于 somedomain.co.uk - 它 return 只是 co.uk。
在这种情况下,您能帮我将 RegExp 重新制作为 return 正确的域吗?
非常感谢!
你应该试试这个:
preg_replace('#^(https?:\/\/)?(www\d?\.)?([^\/\?]+)(.*)#', '', $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?\.)?([^\/\?]+)(.*)#', '', $url) . '<br>';
}
我有一个代码 return 来自 HTTP_HOST
的干净域preg_replace('#^(.*\.)?(.*\..*)$#', '', $_SERVER['HTTP_HOST'])
但如果域类似于 somedomain.co.uk - 它 return 只是 co.uk。 在这种情况下,您能帮我将 RegExp 重新制作为 return 正确的域吗? 非常感谢!
你应该试试这个:
preg_replace('#^(https?:\/\/)?(www\d?\.)?([^\/\?]+)(.*)#', '', $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?\.)?([^\/\?]+)(.*)#', '', $url) . '<br>';
}