Я потратил некоторое время на размышления о том, имеет ли смысл использовать регулярное выражение для этого, но, в конце концов, я думаю, что нет.
regexp firstresponder приблизился к тому, чтобы убедить меня, что это лучший способ, но он не работал ни с чем, у которого отсутствовала конечная косая черта (например, http://example.com). Я исправил это следующим образом: '/\w+\..{2,3}(?:\..{2,3})?(?=[\/\W])/i'
, но потом я понял, что соответствует двум URL-адресам, например «http://example.com/index.htm». К сожалению. Это не так уж плохо (просто используйте первый), но он также дважды совпадает с чем-то вроде этого: «http://abc.ed.fg.hij.kl.mn/», и первое совпадение неверно. :(
Сотрудник предложил только получить хост (через parse_url()
), а затем просто взять последние два или три бита массива (split()
on '.'). Два или три будут основаны на списке доменов , как «co.uk» и т.д. Составление этого списка становится трудная часть.
возможно дубликат [PHP Получение доменного имени от Субдомена] (http://stackoverflow.com/questions/1201194/php-getting-domain-name-from- subdomain) – tripleee 2013-08-15 08:39:03