Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция IsValidEmail

Saibot

Мастер
Professional
Пользователь
Регистрация
20 Сен 2013
Сообщения
2,643
Лучшие ответы
84
Репутация
1,405
Награды
4
Много кто использует регулярное выражение для проверки Email адреса на валидность.
Например, я ни хотел бы подключать сторонний плагин, ради того, что бы проверить - правильно ли игрок написали Email.
Данная функция, проверят строку на латинские буквы, а также на символ @.
До символа @ - Вы сможете ввести любые числа, латинские буквы, а также пробел и точки.
После символа @ - Вы не сможете вводить другие символы, кроме двух точек.

PHP:
stock IsValidEmail(const string[])
{
    new find_@,
        dots_after_@,
        num_repeating_points;

    new i, c;

    while((c = string[i++]) != '\0')
    {
        switch(c)
        {
            case 'A'..'Z', 'a'..'z', '-', '_', '0'..'9':
            {
                num_repeating_points = 0;
                continue;
            }
            case '@':
            {
                if(i == 1) return 0;
                find_@ ++;
            }
            case '.':
            {
                if(!find_@)
                {
                    if(num_repeating_points) return 0;
                    num_repeating_points++;
                    continue;
                }
                if(++ dots_after_@ > 2) return 0;
            }
            default: return 0;
        }
    }
    if(find_@ != 1 || dots_after_@ == 0) return 0;
    return 1;
}
Данная функция возвращает:

0Если найдены запрещенные символы
1Если запрещенные символы не найдены


Тест скорости:

IsValidEmail90 (ms)
Regex_Check275 (ms)


Пример использования:

PHP:
if(IsValidEmail(/*строка*/) == 1) print("Нет запрещенных символов");
else print("Найдены запрещенные символы");

Автор: Saibot
Оптимизировал: DeimoS
 
Последнее редактирование:
Сверху Снизу