2012-05-30 3 views
0

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

Например, у меня есть 3 сайтов, имеют разные расширения домена для трех стран следующим образом.

http://www.domain.com 
domain.de/ 
domain.co.uk 

Мне нужно регулярное выражение, которое получает расширение url в приведенных выше строках. возвращая либо «com», «de», либо «uk»

Помните, что в домене может быть другая строка с завершающими косыми чертами или без нее.

Так идеальное регулярное выражение будет иметь возможность вытащить де из следующих укусов:

"domain.de" or "http://www.domain.de" or "www.domain.de/" 

Ближайшим я пришел это с помощью следующих действий:

\w*$ 

но увы это Безразлично» t работать с завершающей косой чертой.

+3

Вы хотите .com, .de или .co.uk ИЛИ только .com, .co или .uk? –

ответ

2

Если вам нужно, что регулярного выражения работы только на примерах, которые вы добавили это может быть очень легко :

\.([a-z]{2,3})\/?$ 

это будет вывести страну из всех типов входов вы дали нам:

http://www.domain.com 
domain.de 
http://www.domain.de 
www.domain.de/ 

код страны находится в группе захвата 1.

1

Ограничение по HTTP и HTTPS, вы можете использовать:

/^(https?:\/\/)?([^@\/][email protected])?[a-z0-9.]+\.([a-z]{2,4})(:[0-9]+)?\/?$/ 
             ^^^^^^^^^^^^ 

Вы найдете TLD в $ 3.

$ php -r '$t="example.ca"; preg_match("/^(https?:\/\/)?([^@\/][email protected])?[a-z0-9.]+\.([a-z]{2,4})(:[0-9]+)?\/?$/", $t, $m); print $m[3]."\n";' 
ca 
$ php -r '$t="http://user:[email protected]/"; preg_match("/^(https?:\/\/)?([^@\/][email protected])?[a-z0-9.]+\.([a-z]{2,4})(:[0-9]+)?\/?$/", $t, $m); print $m[3]."\n";' 
ca 
+0

Я бы не стал так много разбора URL-адресов. Возможно, используйте [parse_url()] (http://php.net/manual/en/function.parse-url.php), чтобы получить имя домена, а затем создайте регулярное выражение. – kevlar1818

0

Используя то, что у вас уже есть, мы можем настроить его легко принять во внимание для лидирующего слэша

\w*[/]?$