Upotreba regularnih izraza

2

Upotreba regularnih izraza

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

@eevan79: obe funkcije vracaju false za sasvim ispravan email ck@nic.museum Wink (iz glave, bez proveravanja za ostale varijante).

Ako sumnjas da tld .museum postoji, klikni na http://about.museum/contact/ i uveri se.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 21 Apr 2007
  • Poruke: 98

Pa to se bar jednostavno fix-uje. Smile

return (preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i", $str));

Sad bi trebalo da šljaka.



offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

A sta ako je adresa u obliku nesto@amazon.co.uk ? Smile

offline
  • Pridružio: 21 Apr 2007
  • Poruke: 98

Pa radiće. Proveri ako hoćeš. Smile

Evo skripte:
if (!preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i", $address)) {                   echo  "Invalid email!";               }

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Visak je = posle echo Wink

Citat:Parse error: syntax error, unexpected '=' in /var/www/test.php on line 4

A i "pada" na mailu nesto@..com Smile

offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Ah da... Nisam video da si stavio tačku posle 0-9 Smile

A izraz si vidim uzeo sa: http://www.regular-expressions.info/email.html

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Napisano: 05 Avg 2010 20:05

RegEx za email adrese u preg formatu:
'/(?:[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/'

Dopuna: 05 Avg 2010 20:06

Jednostavnija varijanta:
'/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/'

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Tesko je implementirati resenje koje ce zadovoljiti sve kriterijume iz RFC dokumenata. Uglavnom ljudi i ne proveravaju sve moguce (dozvoljene) karaktere, a mnogo njih i nezna sta tacno sme a sta nesme da sadrzi email adresa.

Pogledajte recimo perl modul za email validation:

http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

A evo jednog interesantnog clanka (sa dosta dobrih primera - PHP):

http://www.linuxjournal.com/article/9585

Kao i: http://haacked.com/archive/2007/08/21/i-knew-how-t.....til-i.aspx

(pogledajte i komentare sa oba linka)

Naravno procitajte i relevantna RFC dokumenta. Wink

offline
  • Pridružio: 21 Apr 2007
  • Poruke: 98

stankovic ::Ah da... Nisam video da si stavio tačku posle 0-9 Smile

A izraz si vidim uzeo sa: regular-expressions.info/email.html

Prvi put vidim taj sajt Smile. To je manje više uobičajen regex za email validation, tako da nije čudo što ga ima i na drugim sajtovima.

Rastafarii ::Visak je = posle echo Wink
Ah...prvo sam napisao funkciju za to pa posle sam editovao post. Zaboravio da uklonim "=". Smile
Ispravljeno.

Slažem se sa soxxx. Ljudi i ne proveravaju sve moguće znakove, a bilo bi malo i nebulozno, možda čak može doći do kontra efekta. Mislim da je sasvim dovoljno proveriti znakove pre @ i posle. Ako neko baš hoće da ukuca pogrešnu email adresu gotovo da ne postoji skripta koja će to verifikovati. Npr. neko može da ukuca nešto@hotml.com umesto hotmail.com i skripta će to prihvatiti.

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

eevan79 ::...
Ako neko baš hoće da ukuca pogrešnu email adresu gotovo da ne postoji skripta koja će to verifikovati. Npr. neko može da ukuca nešto@hotml.com umesto hotmail.com i skripta će to prihvatiti.

Zato postoji domain email validation (funkcija checkdnsrr() u PHP). Wink A pored toga, moze se proveriti i dali je adresa zaista prava, putem SMTP protokola. Regexom se samo proverava dali je format email adrese ispostovan.

Shtivo za mozak:

http://www.devshed.com/c/a/PHP/Email-Address-Verification-with-PHP/
http://code.google.com/p/php-smtp-email-validation/

Ko je trenutno na forumu
 

Ukupno su 874 korisnika na forumu :: 4 registrovanih, 0 sakrivenih i 870 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: babaroga, hyla, mnn2, zziko