Upotreba regularnih izraza

2

Upotreba regularnih izraza

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3747
  • 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: 3747
  • 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 1091 korisnika na forumu :: 56 registrovanih, 6 sakrivenih i 1029 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: _Sale, A.R.Chafee.Jr., Andrija357, atmel, Atomski čoban, babaroga, Bobrock1, bojank, bokisha253, Buzdovan, cavatina, darkojbn, Dimitrise93, doklevise, dragoljub11987, FOX, goxin, ivica976, JimmyNapoli, Karla, Koridor, krkalon, Leonov, Lošmi, Magistar78, mikki jons, mikrimaus, milenko crazy north, Milos ZA, Ne doznajem se u oružje, Nobunaga, nuke92, Oscar, ozzy, panzerwaffe, Parker, procesor, raketaš, repac, RJ, robert1979, Rogan33, royst33, ruger357, sasa76, savaskytec, slonic_tonic, Smiljke, Srki94, tubular, VP6919, wolverined4, YugoSlav, zdrebac, zziko, 79693