2012-11-26 53 views
6

我需要驗證不應該考慮HTTP/HTTPS或WWW給定的Facebook頁面url嗎?驗證facebook頁面的正則表達式url

我的意思是下面應該接受或有效

www.facebook.com/ABCDE 
facebook.com/ABCDE 
http://www.facebook.com/ABCDE 
https://www.facebook.com/ABCDE 

而繼應該不被接受或無效

http://www.facebook.com/ => User name/page name not given 
http://www.facebook.com/ABC => User name/page name should have the minimum length of 5. 

對於上述要求,以下我就做正則表達式,但它不檢查用戶名或頁面名稱這是唯一的問題。休息是工作正常:

我是非常新的正則表達式,所以不太瞭解它。

任何類型的幫助將是可觀的。

在此先感謝。

+1

正則表達式可能不是最好的方法來做到這一點。我敢打賭,任何有Facebook API都可以幫助你。 –

+0

@RobertP:謝謝你的寶貴意見,我也會試着去看看那邊。 – Aryan

+0

這個正則表達式看起來不錯。你有什麼問題呢? – rekire

回答

2

parse_url()可以幫助你。

<?php 

$array = array(
    "www.facebook.com/ABCDE", 
    "facebook.com/ABCDE", 
    "http://www.facebook.com/ABCDE", 
    "https://www.facebook.com/ABCDE", 
    "http://www.facebook.com/", 
    "http://www.facebook.com/ABC" 
); 

foreach ($array as $link) { 
    if (strpos($link, "http") === false) { 
     $link = "http://" . $link; //parse_url requires a valid URL. A scheme is needed. Add if not already there. 
    } 
    $url = parse_url($link); 
    if (!preg_match("/(www\.)?facebook\.com/", $url["host"])) { 
     //Not a facebook URL 
     echo "FALSE!"; 
    } 
    elseif (strlen(trim($url["path"], "/")) < 5) { 
     //Trailing path (slashes not included) is less than 5 
     echo "FALSE!"; 
    } 
    else { 
     //None of the above 
     echo "TRUE"; 
    } 
    echo "<br>"; 
} 
+0

其工作很好,謝謝 – Aryan

-1

試試這個(沒有測試它,應該工作)

'~^(https?://)?(www\.)?facebook\.com/\w{5,}$~i' 

\ w是像[A-ZA-Z0-9_]

羅伯特

+0

請解釋一下,爲什麼這是正確的和簡單的解決方案被降級 – cito

+0

https://facebook.com/boule.magique和https://facebook.com/boule- magique是兩個完全有效的facebook網址,你正則表達式拒絕。 – nstCactus