php — извлечение имени хоста с помощью регулярного выражения
-
06-07-2019 - |
Вопрос
Я искал выражение регулярного выражения, которое выдавало бы только часть stackoverflow, а не www.или .com и т. д.Все, что я смог найти, это проверить, действителен ли URL-адрес...Я использовал фильтр URL-адресов PHP, чтобы определить то, что сейчас хочу определить, какой это сайт.
Я никогда раньше не писал выражения, поэтому надеюсь, что кто-нибудь сможет его проверить/порекомендовать лучшее решение.
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
редактировать:Все URL-адреса, с которыми я имею дело, — это .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);