1. PHP / Говнокод #2388

    +151.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    /**
    	 * bool _validate_mail(string mail)
    	 * Validate an email address
    	 * @access private
    	 * @param string mail The email address string
    	 * @return bool
    	 */
    	function _validate_mail($mail)
    	{
    		if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$mail)){
    			return true;
    		}
    		return $this->_debug(4, $mail);
    	}

    no comments...

    Запостил: InTech, 09 Января 2010

    Комментарии (12) RSS

    • Тут одни тру кодеры похоже? Понял, ладно не мешаю создавать подобный гавнокод, удачи проекту идея хорошая на аудитория по уровню видимо созвучная тут :-D
      Ответить
    • Это типа вместо
      ^.+@.+\..+$
      ?
      Ну как бы выражение конечно безумное и вообще неправильное, но и в целом попытка сделать валидацию мейла регекспом впринципе обречена на провал... Даже не знаю :) Я думаю, плюс :)
      Ответить
      • а такое не пройдет: ^.*@.*\..*$ ?
        если не секрет, а то я все не могу понять, в чем разница между .+ и .* :(
        Ответить
        • * - 0..Infinity
          + - 1..Infinity
          Но как бы задача не решается с помощью регулярных выражений, или, может и можно как-нибудь, но выражение будет очень громоздким. RFC описывающий структуру адреса разрешает очень много разных вариантов, например:
          "Александр Сергеевич"@Пушкин
          это вполне валидный адрес, в то время как:
          [email protected]
          Не валидный
          Т.е. валидацию мейлов нужно делать с помощью других инструментов, регулярные выражения для этого не подходят.
          Ответить
        • + Это 1 или более, а * это 0 или более. точка - любой символ.
          Ответить
    • Вопрос на тему.
      Как хорошие прогеры проверяют валидность URL? например cpp-шные прогеры
      Ответить
      • Как хорошие прогеры проверяют валидность URL? например cpp-шные прогеры
        Это пять, чувак! смеюсь... cpp-щные прогеры хорошие, ласковые и пушистые :D
        Ответить
    • Ну, если не делать регекспом, то довольно просто:
      - проверить общую длину
      - если длина в допустимых пределах, проверить, что @ в строке только 1
      - взять все знаки до @
      - проверить длину
      - если длина в предлах допустимой нормы > проверить первый символ
      -- если начинаются с кавычки и заканчиваются кавычкой > варинат валидации имени #1
      -- если нет > проверить на наличие недопустимых символов
      --- если недопустимых символов нет > проверить недопустимые сочетания символов
      ---- если недопустимых сочетаний нет > перейти к валидации домейна
      - взять все знаки после @
      - проверить длину
      - если длина в допустимых пределах > проверить наличие недопустимых символов
      -- если недопустимых символов нет > проверить наличие недопустимых сочетаний символов.
      (возможно разбить на блоки для отдельной валидации домейнов разных уровней)
      #1 вариант валидации - аналогично вышеприведенному, только набор допустимых символов другой
      * опционально проверить наличие домейна в таблице имен.
      Ответить
      • В вендовую программу по ctrl+v можно вставить адрес, нужно отличить локальный адрес к файлу, от url. Хорошо б winapi какой-нибудь юзать, но похоже такого нет)
        Ответить
      • довольно просто
        filter_var($mail, FILTER_VALIDATE_EMAIL)
        Ответить
    • Это ещё сравнительно простой регексп для проверки e-mail. Есть и посложнее, например
      http://regexlib.com/DisplayPatterns.aspx
      или
      http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
      Ответить
    • define('EMAIL_PREG', "/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq |ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|b g|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|b y|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co |com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk| dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi| fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|g m|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|h n|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir |is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr| kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|l y|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|m q|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|n ame|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu |nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr |pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc |sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st| su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tm| tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|u y|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu |za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i");
      Ответить

    Добавить комментарий