php — извлечение имени хоста с помощью регулярного выражения

StackOverflow https://stackoverflow.com/questions/1813599

Вопрос

Я искал выражение регулярного выражения, которое выдавало бы только часть 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top