Upotreba regularnih izraza

1

Upotreba regularnih izraza

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Cao svima.

E ovako treba da uradim tacnost adrese e-poste korisnika, to obavljam pomocu regularnog izraza.
Format sadrzi odredjene alfanumericke ili interpunkcijske znakove ispred simbola @, a iza tog simbola sledi grupa alfanumerickih znakova....

Problem je sto mi vraca FALSE da email nije validan.
Gde gresim?

Kod koji sam pisao izgleda ovako

^[a-zA=z0-9_.\-.]+@[a-zA = z0 - 9\-\.]+\.[a-zA-z0-9\-.]+$

1.Podizraz
Znaci da podatak treba da pocinje najmanje sa jednim slovom, brojem, donjom crtom, tackom.
A simbol @ da odgovara znaku @
^[a-zA=z0-9_.\-.]+

2.Podizraz
Treba da utvrdi da li tacno zadat prvi deo adrese
[a-zA = z0 - 9_.\-\.]+

3.Podizraz
Utvrdjuje ispravnost preostalog dela adrese
^[a-zA=z0-9_.\-.]+$

Kombinacija \. otkriva tacku u tekstu



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Ivan Stojmenovic ::Cao svima.

E ovako treba da uradim tacnost adrese e-poste korisnika, to obavljam pomocu regularnog izraza.
Format sadrzi odredjene alfanumericke ili interpunkcijske znakove ispred simbola @, a iza tog simbola sledi grupa alfanumerickih znakova....

Problem je sto mi vraca FALSE da email nije validan.
Gde gresim?

Kod koji sam pisao izgleda ovako

^[a-zA=z0-9_.\-.]+@[a-zA = z0 - 9\-\.]+\.[a-zA-z0-9\-.]+$
...

Ovo a-zA=z znaci da moze sva mala slova abecede, veliko slovo A, znak jednako, ili malo slovo z. Verovatno hoces ovako: a-zA-Z, sto znaci bilo koje slovo abecede, veliko ili malo.

I daj primer mail adrese koja ti prijavljuje da je neispravna.



offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

@soxxx
Hvala na odg ali sam vec nasao uradio i sada radi..

function valid_email($address) {   // Proverava da li je format adrese e-poste ispravan   if (ereg('^[a-zA=z0-9_.\-.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-.]+$', $address))     return true;   else     return false; }

pokusavao sam razne primere adrese i non stop mi vraca FALSE
sada u medju vremenu dok nisi odg lutao po php manueli...

Hvala jos jednom

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

Opet imas gresku u prvom delu. I jesi siguran da hoces A-z a ne A-Z?

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Pazi ja sam probao sada i sa a-z i sa A-Z dobro je bilo radilo je nije mi nikakvo obavestenje ni gresku izbacilo...
Ostavio sam sada na kraju A-Z

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

Na gresku u prvom delu sam mislio na znak "=" izmedju. Sto se drugog tice, obrati paznju na mala i velika slova u mom postu, nisu ista kao kod tebe. Imas i dva puta znak "." (tacka) u prvom delu koji nisu "escapovani", i koji oznacavaju bilo koji karakter.

Inace ne koristim php, ali posto si naveo php prirucnik bacih pogled, vise se ne preporucuje koriscenje ereg() funkcije, pogledaj preg_match(), ili filter_var() ako koristis php >5.2.0.

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

soxxx ::Inace ne koristim php, ali posto si naveo php prirucnik bacih pogled, vise se ne preporucuje koriscenje ereg() funkcije, pogledaj preg_match(), ili filter_var() ako koristis php >5.2.0.

Ne da se ne preporucuje, nego je deprecated (zastarela i planirana za izbacivanje u sledecoj verziji), a njeno koriscenje u php 5.3 baca Warning svaki put kada se pozove. U verziji 6.0 nece biti warning, vec Fatal Error.

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Napisano: 01 Avg 2010 2:58

upotreba
preg_match()
function valid_email($address) {   // Proverava da li je format adrese e-poste ispravan   if (preg_match('^[a-zA=z0-9_.\-.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-.]+$', $address))     return true;   else     return false; } Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\wamp\www\Admin\login\function.php  on line 51 That is not a valid email address. Please go back and try again.


filter_var()
function valid_email($address) {   // Proverava da li je format adrese e-poste ispravan   if ( filter_var('^[a-zA=z0-9_.\-.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-.]+$', $address))     return true;   else     return false; } Warning: filter_var() expects parameter 2 to be long, string given in C:\wamp\www\Admin\login\function.php on line 51 That is not a valid email address. Please go back and try again.

Moze objasnjenje? Nije mi jasno zasto? Citao sam uputstva i opet WARNING

Dopuna: 01 Avg 2010 3:08

Uspeo sam ali malo na drugaciji nacin

function valid_email($address) { if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $address)) ||       (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$address)) ) {       $host = explode('@', $address);       if(checkdnsrr($host[1].'.', 'MX') ) return true;       if(checkdnsrr($host[1].'.', 'A') ) return true;       if(checkdnsrr($host[1].'.', 'CNAME') ) return true;    }    return false; }

Dopuna: 01 Avg 2010 3:14

pazi sada foru sada sve radi ali mogu da unesem sta god hocu od email adrese.. Znaci ne radi proveru

exmple_12/z.,[]';@gmail.com

znaci i ovakve email adrese prihvata umesto da odbija

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

Citat:Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\wamp\www\Admin\login\function.php on line 51

preg_match() ima delimitere, odnosno karaktere koji se nalaze na pocetku i na kraju patterna. Mozes da stavis koji hoces, ali i na pocetak, i na kraj.

Inace, funkcija ti je neispravna - tj daje pogresne rezultate za odredjene e-mail adrese.

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

Jesi probao ovako nešto:

if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", $address])) {                   echo "Invalid email!";               }

Ako već izbegavaš eregi (što bi trebalo), možeš probati:
        function isValid($str)         {                 return (preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i", $str));         } 

Ko je trenutno na forumu
 

Ukupno su 722 korisnika na forumu :: 50 registrovanih, 3 sakrivenih i 669 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 2413 - dana 03 Okt 2019 05:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., aljosa7, aramis s, Atomski čoban, baza, cicus91, cole77, Cvijo_ue, dragoljub11987, Drug pukovnik, Eyes Wide Shut, Faki-Valjevo, FOX, Georgius2, goran.vvv, gorozup, husky, indja, Kaplar2, Koca Popovic, kristijan97, Kubovac, kunktator, Levi2, Marko Marković, mgaji21, Milan Kosić, Milos ZA, miodrag3, nemkea71, nenad812, NenadG, nuke92, Oscar2, pedja2000_9, pein, radoznao2, Recce, repac, Shomy, Sirius, stegonosa, suton2, tomigun, Trpe Grozni, versus2, vladetije, wizzardone, wolverined4, YU-UKI