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 [Link mogu videti samo ulogovani korisnici] Wink (iz glave, bez proveravanja za ostale varijante).

Ako sumnjas da tld .museum postoji, klikni na [Link mogu videti samo ulogovani korisnici] 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 [Link mogu videti samo ulogovani korisnici] ? 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: [Link mogu videti samo ulogovani korisnici]

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:

[Link mogu videti samo ulogovani korisnici]

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

[Link mogu videti samo ulogovani korisnici]

Kao i: [Link mogu videti samo ulogovani korisnici]

(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: [Link mogu videti samo ulogovani korisnici]

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:

[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]

Ko je trenutno na forumu
 

Ukupno su 1347 korisnika na forumu :: 88 registrovanih, 7 sakrivenih i 1252 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 6018 - dana 19 Dec 2025 13:41

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, Ageofloneliness, amaterSRB, Automaticar, babaroga, Betta, Bobrock1, bojank, Boroš, Chainsaw, cvrle312, Daba75, DalmatinacMF, darkojbn, Darth Wader, Deki Duga Devetka, Despot Đurađ, Despot1, dimitrije.muzur, dnevnasoba, Dogma21, draganca, Futog 74, hyla, Jakonjveliki, jalos, jeen yuhs, Jeremiah, Joint Chief, Jozo74, kenny74, Koce, komsija1, Korle, krkalon, kybonacci, lafa008, Laluvr, Leonov, ljubo70, luka35, m0nstrum_, Malahit, Meklejn, mercedesamg, Mickey91, Miki01, mile.ilic75, Milos1389, milos97, Milovan Dinic, mir juzni, MK10, Morava71, MrG, Mzee, nebkv, niksa517, obsc, Pekman, Pero Petković, PrincipL, RajkoB, RED4G-304, renvoi, samp1389, sap, sasics, shota91, Sir Budimir, Srna, stegonosa, synergia, tooljan, travisrise, TRZH92, VaRvArI 85, vaso1, veljko82, Vlad000, Vrač, vuksa72, Webb, Yekaterinburg, Zavulon, zombicar153, zule2, Žrnov