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: 3714
  • 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: 3714
  • 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 1294 korisnika na forumu :: 74 registrovanih, 7 sakrivenih i 1213 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: Apok, Atomski čoban, b_z_b, Bane san, Boris90, Boter, Botovac, Buda Baba, ccoogg123, Cobi026, comi_pfc, dane007, dankisha, darkojbn, dartxxq, doklevise, draganl, dragoljub11987, Drug pukovnik, Džordžino, ekozelj, FOX, hooraay, hyla, ivan1973, ivica976, JOntra, kaptain, Khaless, kosticmilanko, lidija2011, Mark Mazover, Mimikrija, miodrag, Mixelotti, mkukoleca, moldway, Motocar, nebkv, nebojsag, opt1, Oscar2, pacika, pandur, Paor, pceklic, pedja.st, radoznao, rkekoke, S2M, sabros, simazr, Sirius, slonic_tonic, solic, srbijaiznadsvega, Srle993, stagezin, trajkoni018, trikomso, Trpe Grozni, Van, vasa.93, virked, Vlad000, vlad84, vladom6, Voja1978, wizzardone, Wrangler, YU-UKI, yufighter, zhuki8, zxstole