我从表单中获取了一个网址,这样:
$input_website = isset($_POST['website']) ? check_plain($_POST['website']) : 'None';
我需要取回一个裸域名(用于某些API集成),例如: http://www.example.com 将返回 example.com 并且 www.example.com 将返回 example.com 等。
我现在有了这个代码,它会为第一个案例 http://www.example.com 返回正确的网址,但不会为 www.example.com 甚至 example.com :
function get_domain($url)
{
$pieces = parse_url($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)) {
return $regs['domain'];
}
return false;
}
你能就此事提出建议吗?
答案 0 :(得分:2)
根据与您的讨论:
$url = 'www.noamddd.com';
$arrUrl = explode("/", $url);
echo $arrUrl[0];
旧答案:
使用以下代码块创建一个函数并获取域名。
试试这个
更多关于parse_url
$url = 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html';
$parse = parse_url($url);
print $parse['host']; //google.com
你也可以用另一种方式做到这一点:
echo $domain = str_ireplace('www.', '', parse_url($url, PHP_URL_HOST));//google.com
答案 1 :(得分:0)
如果您只有URL(并且不希望当前域名如frayne-konok建议)并且想要提取服务器名称,则可以使用这样的正则表达式:
$serverName = preg_replace('|.*?://(.*?)/.*|', '$1', $url);
答案 2 :(得分:0)
我最终做了一些不同的事情 - 检查是否有http,如果没有,我正在使用此功能添加它:
function addHttp($website) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $website;
}
然后才将它发送到我的其他返回域名的函数。 肯定不是最好的方式,但它的工作原理。