Ereg kullanarak PHP URL doğrulamak

3 Cevap

Ben ereg yöntemi kullanarak URL doğrulayarak duyuyorum. İşte benim kod:

function validationURL($URL) {
    if (ereg("^(http://www|www)[.]([a-z,A-Z,0-9]+)([-,_])([a-z,A-Z,0-9]+)[.]([a-z,A-Z]){2,3}[.]?(([a-z,A-Z]){2,3})[/]?[~]?([/,a-z,A-Z,0-9]+)?$",$URL)){
        return true;
    } else {
        return false;
    }
}


if ($website !="" && $website !=NULL) {
    if (validationURL($website)){
        $websiteOk = true;
    } else {
        $errmsg = $errmsg . "URL Is Invalid.<br>";
        $websiteOk = false;
    }
}

Herhangi bir bu kod ile ne yanlış söyleyebilir. Ben www.google.com.my test ama onun değil çalışma.

3 Cevap

Belki soruya bir cevap değil, ama PHP5 beri bunu yapmak için daha iyi bir yolu var biliyor musun? Fonksiyonu filter_var denir ve diğer şeyler arasında URL ve e-posta adreslerini doğrulamak için kullanabilirsiniz. Örnek:

$website = $_POST['postedInAForm_Maybe'];
if (filter_var($website, FILTER_VALIDATE_URL)) {
    echo "Yay!";
} else {
    echo "Nah.";
}

Sen filtreleri bulabilirsiniz here.

Ben regex ile iyi değilim, ama filtreleri yerleşik PHP içine baktım [filtresi uzantısı PHP 5.2.0 varsayılan olarak etkindir.]?

There is a URL filter: http://us.php.net/manual/en/filter.filters.validate.php

specific URL filter example: http://www.phpro.org/tutorials/Filtering-Data-with-PHP.html#8

Ereg olarak (POSIX) işlevleri şimdi amortismana tabi tutulur, ben Björn katılıyorum, ama filter_var kullanamazsınız eğer, o zaman gebelik fonksiyonları (Perl-uyumlu Düzenli İfadeler) kullanmak her zaman daha iyidir.

This blog post, bazı gerçekten iyi REGEX örnekler vardır.