我一直在寻找一个正则表达式,它只会吐出'stackoverflow'部分而没有www。或 .com 等。我所能找到的只是检查 url 是否有效......我已经使用 php 的 url 过滤器来确定我现在正在寻找的站点是哪个站点。
我以前从未写过表达式,所以我希望有人可以检查它/推荐一个更好的解决方案。
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
编辑:如果有帮助,我正在处理的所有网址都是 .com
我一直在寻找一个正则表达式,它只会吐出'stackoverflow'部分而没有www。或 .com 等。我所能找到的只是检查 url 是否有效......我已经使用 php 的 url 过滤器来确定我现在正在寻找的站点是哪个站点。
我以前从未写过表达式,所以我希望有人可以检查它/推荐一个更好的解决方案。
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
编辑:如果有帮助,我正在处理的所有网址都是 .com
你考虑过 PHP 的parse_url()函数吗?
单行不使用正则表达式!!!
$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;
如果您知道您所拥有的是一个 URL 并且域以 .com 结尾,那么简单的事情就像
preg_match('#([^\.]*)\.com#', $url, $matches);
应该做的伎俩。
虽然这在类似的域上会失败,www.com.foo.com
但可能就足够了,具体取决于您的情况。
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);