Проверьте URL в PHP, используя ereg - PullRequest
0 голосов
/ 09 октября 2009

Я проверяю URL, используя метод ereg.Вот мой код:

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;
    }
}

Любой может сказать мне, что не так с этим кодом.Я проверил www.google.com.my, но он не работает.

Ответы [ 3 ]

5 голосов
/ 09 октября 2009

Возможно, это не ответ на ваш вопрос, но вы знаете, что есть лучший способ сделать это с PHP5? Функция называется filter_var , и вы можете использовать ее для проверки URL-адресов и адресов электронной почты, среди прочего. Пример:

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

Вы можете найти фильтры здесь .

3 голосов
/ 09 октября 2009

Я не лучший в regex, но вы смотрели на встроенные фильтры PHP [Расширение фильтра включено по умолчанию в PHP 5.2.0.]?

Существует URL-фильтр: http://us.php.net/manual/en/filter.filters.validate.php

пример конкретного фильтра URL: http://www.phpro.org/tutorials/Filtering-Data-with-PHP.html#8

0 голосов
/ 09 октября 2009

Я согласен с Бьёрном, но если вы не можете использовать filter_var, то всегда лучше использовать функции preg (Perl-совместимые регулярные выражения), так как функции ereg (POSIX) теперь устарели.

В этом блоге есть несколько действительно хороших примеров REGEX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...