我一直在寻找一个正则表达式,只会吐出'stackoverflow'部分而没有www。我所能找到的只是检查网址是否有效...我已经使用了php的网址过滤器确定了我现在正在寻找的网站。

我之前从未写过表达式,因此我希望有人可以检查/建议更好的解决方案。

preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)

编辑: 我正在处理的所有网址都是.com,如果有帮助的话

有帮助吗?

解决方案

单行而不使用正则表达式!!!

$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;

其他提示

您是否考虑过PHP的 parse_url()功能?

如果你知道你所拥有的是一个URL而域名在.com中结束就像

一样简单
preg_match('#([^\.]*)\.com#', $url, $matches);

应该这样做。

虽然这会在 www.com.foo.com 这样的域上失败,但可能已经足够了,具体取决于你的情况。

preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top