"PHP" / Говнокод #2388 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 InTech, (Updated )

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

  • Тут одни тру кодеры похоже? Понял, ладно не мешаю создавать подобный гавнокод, удачи проекту идея хорошая на аудитория по уровню видимо созвучная тут 😀
    Ответить
  • Это типа вместо
    ^.+@.+\..+$
    ?
    Ну как бы выражение конечно безумное и вообще неправильное, но и в целом попытка сделать валидацию мейла регекспом впринципе обречена на провал... Даже не знаю 🙂 Я думаю, плюс 🙂
    Ответить
    • а такое не пройдет: ^.*@.*\..*$ ?
      если не секрет, а то я все не могу понять, в чем разница между .+ и .* 🙁
      Ответить
      • * - 0..Infinity
        + - 1..Infinity
        Но как бы задача не решается с помощью регулярных выражений, или, может и можно как-нибудь, но выражение будет очень громоздким. RFC описывающий структуру адреса разрешает очень много разных вариантов, например:
        "Александр Сергеевич"@Пушкин
        это вполне валидный адрес, в то время как:
        aleksand..sergeevich@pushkin.com
        Не валидный
        Т.е. валидацию мейлов нужно делать с помощью других инструментов, регулярные выражения для этого не подходят.
        Ответить
      • + Это 1 или более, а * это 0 или более. точка - любой символ.
        Ответить
  • Вопрос на тему.
    Как хорошие прогеры проверяют валидность URL? например cpp-шные прогеры
    Ответить
    • Как хорошие прогеры проверяют валидность URL? например cpp-шные прогеры
      Это пять, чувак! смеюсь... cpp-щные прогеры хорошие, ласковые и пушистые 😀
      Ответить
  • Ну, если не делать регекспом, то довольно просто:
    - проверить общую длину
    - если длина в допустимых пределах, проверить, что @ в строке только 1
    - взять все знаки до @
    - проверить длину
    - если длина в предлах допустимой нормы > проверить первый символ
    -- если начинаются с кавычки и заканчиваются кавычкой > варинат валидации имени #1
    -- если нет > проверить на наличие недопустимых символов
    --- если недопустимых символов нет > проверить недопустимые сочетания символов
    ---- если недопустимых сочетаний нет > перейти к валидации домейна
    - взять все знаки после @
    - проверить длину
    - если длина в допустимых пределах > проверить наличие недопустимых символов
    -- если недопустимых символов нет > проверить наличие недопустимых сочетаний символов.
    (возможно разбить на блоки для отдельной валидации домейнов разных уровней)
    #1 вариант валидации - аналогично вышеприведенному, только набор допустимых символов другой
    * опционально проверить наличие домейна в таблице имен.
    Ответить
    • В вендовую программу по ctrl+v можно вставить адрес, нужно отличить локальный адрес к файлу, от url. Хорошо б winapi какой-нибудь юзать, но похоже такого нет)
      Ответить
  • 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");
    Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8