通过preg_match从链接获取sitename

时间:2012-08-31 20:43:42

标签: php

我正在尝试从链接中获取网站名称

例如

我有这个链接

http://stackoverflow.com
http://www.google.com

我想得到这个结果

stackoverflow
google

我正在尝试preg_match,但我的表达式有问题

2 个答案:

答案 0 :(得分:3)

您不需要preg:

$parsed = parse_url($url);
$host = $parsed['host'];

e:这也会有.com但您可以更轻松地修剪TLD,而不是整个域匹配。

答案 1 :(得分:0)

这并不像你想象的那么简单。您的示例仅包含.com TLD,因此如果您将其限制为,则可以执行以下操作:

$result = preg_replace('(^(.+\.)?([^.]+)\.com$)', '$2', parse_url($subject, PHP_URL_HOST));

哪会返回

stackoverflow
例如,

。但是,如果要覆盖常见的域后缀,这不是一件容易的事。你会在Mozilla找到一个已知后缀的列表,它是PSL - Public Suffix List。它有一些特殊的语法,并且存在a PHP library