0

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

我以前从未写过表达式,所以我希望有人可以检查它/推荐一个更好的解决方案。

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

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

4

4 回答 4

5

你考虑过 PHP 的parse_url()函数吗?

于 2009-11-28T20:14:59.783 回答
2

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

$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;
于 2009-11-28T20:24:46.863 回答
0

如果您知道您所拥有的是一个 URL 并且域以 .com 结尾,那么简单的事情就像

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

应该做的伎俩。

虽然这在类似的域上会失败,www.com.foo.com但可能就足够了,具体取决于您的情况。

于 2009-11-28T20:02:28.810 回答
0
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);
于 2009-11-28T20:03:09.233 回答