php - извлечение имени хоста регулярного выражения - PullRequest
0 голосов
/ 28 ноября 2009

Я искал выражение регулярного выражения, которое будет выплевывать только часть 'stackoverflow', а не www. или .com и т. д. Все, что я мог найти, это проверить, были ли URL-адреса действительными ... Я использовал php-фильтр url, чтобы определить, сколько я сейчас ищу, чтобы определить, какой это сайт.

Я никогда не писал выражения раньше, поэтому я надеюсь, что кто-нибудь может проверить его / порекомендовать лучшее решение.

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

редактировать: Все URL, с которыми я имею дело, это .com, если это поможет

Ответы [ 4 ]

5 голосов
/ 28 ноября 2009

Рассматривали ли вы функцию PHP parse_url () ?

2 голосов
/ 28 ноября 2009

однострочник без использования регулярных выражений !!!

$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;
0 голосов
/ 28 ноября 2009
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);
0 голосов
/ 28 ноября 2009

Если вы знаете, что у вас есть URL-адрес, а домен заканчивается на .com, то простая вещь, как

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

должен сделать трюк.

Хотя это не удастся для домена, подобного www.com.foo.com, но этого может быть достаточно, в зависимости от вашей ситуации.

...