按preg_match从链接获取站点名称


get sitename from link by preg_match

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

例如

我有这个链接

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

我想得到这个结果

stackoverflow
google

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

你不需要怀孕:

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

e:这也将具有.com但您可以比匹配整个域更容易修剪 TLD。

这并不像你想象的那么微不足道。您的示例只有 .com 个 TLD,因此如果您将其限制为该 TLD,您可以这样做:

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

哪个会返回

stackoverflow

例如。但是,如果您想涵盖公共域后缀,这就不那么简单了。您会在Mozilla上找到已知后缀的列表,它是PSL - 公共后缀列表。它有一些特殊的语法,并且存在一个PHP库。