2009-11-28 3 views
0

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

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

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

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

ответ

2

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

$url = 'http://stackoverflow.com'; 
$d = array_shift(explode('.', str_replace('www.', '', parse_url($url, PHP_URL_HOST)))); 
echo $d; 
+0

ха-ха ... это только один лайнер, потому что вы застряли все в одной строке :) Независимо от того, что он работает хорошо. Его лучшее до сих пор. – Mark

+1

Это не удается. Используйте эту строку 'www.myusualhost-test.co.in.php53-1.dfw1-2.websitetestlink.com', и она дает мне« myusualhost-test », тогда как я просто хочу« myusualhost-test.co.in.php53- 1.dfw1-2.websitetestlink'. – Kumar

0

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

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

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

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

0
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match); 
5

Считаете ли вы, что функция PHP parse_url()?

+0

функция действительно замечательная .... за исключением того, что она по-прежнему оставляет меня с иногда «www.». и иногда нет «www». поэтому мне все равно придется предварительно предписать www. – Mark