【问题标题】:How to get only center domain name from url如何从 url 只获取中心域名
【发布时间】:2015-07-15 16:45:37
【问题描述】:

我有成千上万个网址,例如,我只想从中获取域名

http://google.com

<?php

$url = 'http://google.com';
$host = parse_url($url);
echo '<pre>';
print_r($host['host']);
echo '</pre>';

**//Output google.com**

?>

但我只想从 http://google.com 获取 google 而不是 google.com

请帮忙谢谢

【问题讨论】:

标签: php url parse-url


【解决方案1】:

不是特别优雅,但这样的东西只需域名......

$url = 'http://dev.subdomain.google.com';
$host = parse_url($url,PHP_URL_HOST);
$pieces=explode( '.', $host );
$popped=array_pop( $pieces ); //remove tld extension from stack
if( strlen( $popped ) <= 3 ) array_pop( $pieces ); //tld was likely a multi-part ext like .co.uk so pop next element off stack too!

$domain=array_pop( $pieces );

echo $domain; // returns 'google'

【讨论】:

  • ..刚刚意识到这不能处理像 .co.uk 这样的 tld,因为你会留下 'co' 而不是 google .....
  • 感谢您的回答,但请帮我解决这个 tld 的问题,我有这样的 .co.uk 域
  • 如果有 .co.uk 或 .gov.uk 等典型的顶级域名,但允许使用较新的类型(可以在 wiki.mozilla.org/TLD_List 的列表中找到),最后的更改会更接近问题变得更加复杂。
  • 顺便说一句 - 这是当前 TLD 列表,您实际上需要解析才能准确:publicsuffix.org/list/public_suffix_list.dat - 其中有 cmets 和空格,因此需要一些工作来解析,但您可能仍在考虑使用 10000 个可能的 TLD(或 2 级、3 级、4 级域)
【解决方案2】:
$url = 'http://google.com';
$host = parse_url($url);
$host = strstr($host, '.com', true);

有关更多详细信息,请参阅php.net/strstr,当然还有其他更好的方法。

【讨论】:

  • 我有数以千计的域,不仅有 .com,它还有很多变体,如 .es .to .org .net 等,那么如何实现呢?
【解决方案3】:

试试下面的代码

<?php
   $full_url = parse_url('http://facebook.com');
   $url = $full_url['host'];
   $url_array = explode('.',$url);
   echo $url_array[0];
?>

【讨论】:

    【解决方案4】:

    也许你可以用正则表达式修复它

    $host = (preg_replace("#(http://)|(https://)|\.(com)|(co\.uk)|(fr)|(de)|(org)|(net)#", "", $host));
    

    preg_replace:preg_replace manual (php.net) 测试你的正则表达式:Debuggex

    【讨论】:

    • 好的 - 现在考虑这个:wiki.mozilla.org/TLD_List ... 这并不涵盖所有的二级域。
    • 没错,它并不涵盖所有扩展。您需要将它们添加为用法。另一种方法是删除从末尾到最后一个断点的所有内容。此解决方案不涵盖所有扩展名为“.co.uk”
    • 我知道 - 这个问题是重复的......我之前尝试过回答它,当时我决定几乎不可能做出 100% 有效的解决方案;)
    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多