php - 正则表达式主机名提取
-
06-07-2019 - |
题
我一直在寻找一个正则表达式,只会吐出'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);
不隶属于 StackOverflow