Я потратил некоторое время на размышления о том, имеет ли смысл использовать для этого регулярное выражение, но, в конце концов, я думаю, что нет.
Регулярное выражение первого респондента почти убедило меня, что это лучший способ, но оно не сработало ни с чем, кроме пропуска косой черты (например, 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()
в '.'). Два или три будут основаны на списке домены, такие как «co.uk» и т. д. Составление этого списка становится сложной частью.