Может кто-нибудь объяснить, что делает этот скрипт, пожалуйста - PullRequest
0 голосов
/ 03 июня 2009
class person {

    var $name;
    var $email;

    //Getters
    function get_name() { return $this->name; }
    function get_email() { return $this->email; }

    //Setters
    function set_name( $name ) { $this->name = $name; }

    function set_email( $email ) {

        if ( !eregi("^([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])*$", $email ) ) {
            return false;
        } else { 
            $this->email = $email;
            return true;
        }

    }//EOM set_email

}//EOC person

Ответы [ 2 ]

10 голосов
/ 03 июня 2009

Это класс данных для хранения информации о человеке. Это также делает проверку электронных писем. Если вы передадите методу set_email неверный адрес электронной почты (в данном случае это строка, которая не соответствует регулярному выражению), метод вернет false.

9 голосов
/ 03 июня 2009

Это класс, который хранит имя пользователя и адрес электронной почты. Метод set_email () проверяет указанный адрес, чтобы убедиться, что он выглядит действительным, прежде чем сохранить его.

Функция eregi проверяет адрес электронной почты с помощью регулярного выражения. Это очень мощные способы выполнения строк и парсинга, но этот конкретный пример, вероятно, не лучшее введение. Если вы только начинаете использовать регулярные выражения, вы можете посмотреть регулярные выражения, совместимые с Perl , так как они более широко используются и более мощны. Кроме того, функции ereg устарели с PHP5.3 +

Вот один источник вводной информации , и я бы порекомендовал использовать приложение, такое как Regex Coach , для игры и проверки регулярных выражений.

Чтобы разбить его:

^                         # force match to be at start of string
([0-9,a-z,A-Z]+)          # one or more alphanumerics
([.,_,-]([0-9,a-z,A-Z]+)) # followed by period, underscore or 
                          # dash, and more alphanumerics
*                         # last pattern can be repeated zero or more times
[@]                       # followed by an @ symbol
([0-9,a-z,A-Z]+)          # and one or more alphanumerics
([.,_,-]([0-9,a-z,A-Z]+)) # followed by period, underscore or dash, 
                          # and more alphanumerics
*                         # last pattern can be repeated zero or more times
[.]                       # followed by a period
([0-9,a-z,A-Z]){2}        # exactly two alphanumerics
([0-9,a-z,A-Z])*$         # then the remainder of the string must be 
                          # alphanumerics too - the $ matches the end of the
                          # string

Написание регулярного выражения, соответствующего 100% всех действительных адресов электронной почты, довольно сложно, и это упрощенный шаблон, который будет соответствовать большинству. Вот хорошая статья о написании шаблонов регулярных выражений адресов электронной почты .

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