2010-05-09 30 views
0

我目前有一個preg_match來檢測http://和www。等.....但我想檢測domain.com或domain.co.uk從一個字符串檢測.com/.co.uk等等

例如字符串:「嘿,怎麼樣了它去, 退房domain.com」我想 檢測域.com

我想要的是檢測任何主要域形成這個字符串,即.com .co.uk .eu等...從形式example.com example2.co.uk,然後返回true或錯誤來處理它。在這種情況下,它會找到domain.com。

但是我不希望它來檢測類似:

「hey.i喜歡這個網站」

其中,該顯然是從完全停止鍵入空格的錯誤!

任何想法,我需要抓住我的正則表達式!

感謝, 斯特凡

+0

@Stefan重新您的更新,即使你是在一個字符串的URL檢測,我會建議,以獲取整個事情,然後做一個'parse_url()'(如果你確實需要一個正則表達式,而不是使用正則表達式將URL分隔成主機名,域名,子域名),爲什麼不添加一些你想從中提取的HTML示例。 – 2010-05-09 15:16:46

+0

這將是「Yeh我同意google.com」,然後檢測google.com – 2010-05-09 15:20:25

+0

@Stefan aahh,我明白了。我認爲這並不是微不足道的。您是否擅於檢測任何xxx.yyy組合或真正有效的域名? – 2010-05-09 15:29:25

回答

2

後,他們推出了非拉丁文網址,這將是幾乎不可能使用正則表達式來獲得完整的工作過濾器。所以我會說,甚至不值得爲此使用正則表達式。懷疑parse_url()有這方面的支持還沒有下去,但使用它意味着別人必須解決與非拉丁文網址的問題,這始終是一個獎金:)所以使用

http://au.php.net/parse_url

http://thenextweb.com/me/2010/05/06/monumental-day-internet-nonlatin-domain-names-live/

編輯: 好了,從一個字符串,將它分成的話這樣


$array = explode(" ", $string); 

for(int i = 0; i < count($array);i++) 
{ 
    if(parse_url($array[i]) != false) 
    { 
    $url[] = $array[i]; 
    } 
} 

好吧,parse_url()是不應該這樣被使用,但沒有內置其他職能到php來做URL過濾,據我所知。

1

這裏是正則表達式,將匹配域區提供的列表:

[a-z0-9\-\.]+\.(com|co\.uk|net|org) 
+0

似乎沒有工作? – 2010-05-09 17:06:53