【问题标题】:How can I parse just the name of the site from the URL in PHP? [duplicate]如何仅从 PHP 中的 URL 解析站点名称? [复制]
【发布时间】:2014-03-12 05:34:57
【问题描述】:

我知道有 parse_url,然后你会得到 ['host'],但这会返回完整的 www.example.com。我想要的是以下内容:

https://stackoverflow.com/questions/ask 转向 stackoverflow

https://console.aws.amazon.com/s3/home?region=us-west-2 转向 亚马逊

https://www.google.com/ 转向 google

关于如何做到这一点的任何建议?

【问题讨论】:

  • 我想不出有什么可以可靠做到这一点。如果您获取主机名,则可以检索您提到的示例,将其分解为.,并获取倒数第二个元素。
  • @Jorg,不适用于国家/地区域:www.google.co.uk。倒数第二个是.co
  • @Andy Jorg 就是这么说的,它工作不可靠。
  • 是的,它确实说它仅适用于这些示例,并且不可靠。这就是为什么它不是答案而是评论:)

标签: php parsing url


【解决方案1】:

仍然使用 parse_url(),但之后使用explode() 并获取倒数第二个索引

// Explode by .
$arr_host = explode('.', $host);
// Count how many in array
$count = count($arr_host);
// Get second to the last index
$domain = $arr_host[$count-2];

echo $domain;

【讨论】:

  • http://www.samsung.co.kr/main.do 转为...?
  • $parse = parse_url($url); $host = isset($parse['host']) ? $parse['host'] : '';
【解决方案2】:

试试

$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)) {
   echo strstr($regs['domain'], '.', true);
}

【讨论】:

猜你喜欢
  • 2019-07-13
  • 2012-08-30
  • 1970-01-01
  • 2013-03-03
  • 2012-12-20
  • 2012-08-30
  • 2018-02-03
  • 1970-01-01
  • 2017-03-05
相关资源
最近更新 更多