preg_match_all регулярные выражения поддоменов - PullRequest
0 голосов
/ 08 декабря 2011

Привет, у меня есть это регулярное выражение для сопоставления с ursl, но мне тоже нужно сопоставить поддомен.

public function getUrls($url){
     preg_match_all( "#(www\.|https?:\/\/){1}[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i",$url, $matches );
     return $matches[0];
}  

это совпадение http://domain.com но не http://sub.domain.com

Есть идеи, как заставить это работать?

1 Ответ

1 голос
/ 08 декабря 2011

Заменить [a-zA-Z0-9]{2,}\. на ([a-zA-Z0-9]{2,}\.)+. Но регулярное выражение соответствует множеству недопустимых доменов и, вероятно, не будет соответствовать всем действительным URL Было бы разумнее использовать правильную библиотеку синтаксического анализатора для URL, если язык, который вы используете, предоставляет ее.

...