Upotreba regularnih izraza

2

Upotreba regularnih izraza

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3763
  • 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: 3763
  • 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 2344 korisnika na forumu :: 75 registrovanih, 2 sakrivenih i 2267 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4. Ozrenska, Agape, ALEKSICMILE, AleksSE, ast13, Asteker, Banovo Brdo, Boroš, BOXRR, bufanje, bukefal, carinko, cebam, desmeki, Dimitrije Paunovic, DJUNTA, dolinalima, DovlaODR, draganl, Frunze, Gaga_89, Giskard, hyla, ILGromovnik, Ivoo, jalos, Jan, Jaxupa, Jomini, komenski, Kružić, kuntakinte, lacko, Laluvr, luka35, MarijaC84, marko308, marsi, max power, Mi lao shu, MidnighT_AlieN, mikhailo, milos.cbr, Misirac, mladen.zovko, moldway, nenomir, neutrino, nezavisni mislilac, nixos, nuke92, opt1, ostoja, Parker, Pauljxxx, pein, pisac12, pobeda, Promising0, sales, Sharpshooter, shlauf, simicnenadbg, singa, Slobodan Filipović, theNedjeljko, tmanda323, tubular, tuf, ulogovan, VanZan, VJ, Vrač, vuksa72, wize