7

http/https または www が指定されているかどうかを考慮しない 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.

上記の要件に対して、次の正規表現を作成しましたが、唯一の問題であるユーザー名またはページ名をチェックしていません。残りは正常に機能しています:

/^(https?:\/\/)?((w{3}\.)?)facebook.com\/(([a-z\d.]{5,})?)$/

私は正規表現に非常に慣れていないので、それについてあまり知りません。

あらゆる種類のヘルプはかなりのものです。

前もって感謝します。

4

2 に答える 2

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>";
}
于 2012-11-26T21:14:43.113 に答える
-1

これを試してください(テストしていませんが、動作するはずです)

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

\w は [a-zA-Z0-9_] のようなものです

ロバート

于 2012-11-26T22:56:00.203 に答える