Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyrazenia regularne i poprawny email
Forum PHP.pl > Forum > PHP
nieraczek
Moja funkcja sprawdzaj±ca poprawno¶ć emaila to:
  1. <?php
  2. function poprawnyemail($email) 
  3. {
  4.  if (!eregi('^[-_0-9a-z.]+@[-_0-9a-z]+.[-_0-9a-z.]+$', $email)) 
  5.  {
  6. return false; //zwraca "false" je¶li email jest błędny
  7.  }
  8.  return true; //zwraca "true" je¶li email jest poprawny
  9. }
  10. ?>


Ale jak kto¶ np. wpisze email: ŁukaszŁukaszenko@wp.pl to email uznanie zostanie za błędny z powodu polskiej litery "ł" - jak zrobić żeby emaile z polskimi znakami były też poprawne ?
Fixus
dawno nie skorzystałem z wyrażeń regularnych, ale z tego co widzę to problem nie leży w polskich znakach tylko w tym, że wg. twoje wyrażenia WIELKIE litery s± błędne. Powinno to wygl±dać tak:
Kod
if(!eregi('^[-_0-9a-zA-Z.]+@[-_0-9a-zA-Z]+\.[-_0-9a-zA-Z.]+$', #mail))


teraz wielkie znaki będ± uwzględniane
nieraczek
Sprawdziłem i niestety przy małych literach "ł" też uznaje adres email za błędny. W ksi±żce znalazłęm że funkcja eregi () nie widzi różnicy między małymi a wielkimi literami, tak± różnicę widzi funkcja o prawie identycznej nazwie ereg(). Dziwne rzeczy z tymi polskimi znakami w wyrażeniach regularnych. W takim razie skoro w tych wyrażeniach regularnych brak polskich znaków to może znacie inny sposób jak możnaby zweryfikować poprawno¶ć adresu email ?
Fixus
fakt...masz racje je¶li chodzi o funkcję. Mam jednak do ciebie pytanie...czemu martwisz się polskimi znakami w adresie? Z tego co mi wiadomo polskie znaki nie występuj± w adresie, przynajmniej ja się nigdy z nimi nie spotkałem
Speedy
Cytat(nieraczek @ 15.09.2007, 13:40:48 ) *
jak zrobić żeby emaile z polskimi znakami były też poprawne ?


Tak:

  1. <?php
  2. if(!eregi('^[-_0-9a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż.]+@[-_0-9a-zA-Z]+.[-_0-9a-zA-Z.]+$', $mail))
  3. ?>


A je¶li chcesz, żeby przepuszczało też domeny z polskimi znakami (wiem, że mog± takie być, tylko wtedy przekierowuj± one na jakie¶ specjalne adresy, z kombinacjami liter które odpowiadaj± tym znakom), to tak:

  1. <?php
  2. if(!eregi('^[-_0-9a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż.]+@[-_0-9a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż]+.[-_0-9a-zA-Z.]+$', $mail))
  3. ?>


Cytat
fakt...masz racje je¶li chodzi o funkcję. Mam jednak do ciebie pytanie...czemu martwisz się polskimi znakami w adresie? Z tego co mi wiadomo polskie znaki nie występuj± w adresie, przynajmniej ja się nigdy z nimi nie spotkałem


Można obrać tak± taktykę:
1. Puszczać polskie znaki
2. Przekształcać polskie znaki na zwykłe (± -> a itd.)
Fixus
ja bym jednak nie pchał się w takie rzeczy. Bo to bez sensu raczej...polskie znaki nie powinny występować....zgodze się ze Speedy, że trzeba przerabiać polskie znaki na te bez "ogonków". Zaprz±głbym wogóle do tego AJAX`a, ale oczywi¶cie po stronie serwera robił drugie sprawdzenie no i wtedy konwersje znaków.
nieraczek
O dziękuję bardzo Speedy smile.gif Fixus jaki¶ rok temu pamiętam, że za darmo przez 30 dni można było gdzie¶ założyć konto pocztowe z polskimi znakami, ja pamiętam że założyłem i miałem takie konto, a po 30 dniach jak konto pocztowe zostało zablokowane i trzeba było zapłacić żeby z niego korzystać to zrezygnowałem, tylko nie pamiętam już gdzie takie co¶ umozliwiano.......
Fixus
nieraczek ja nie mówie, że nie ma. Ja tylko mówię, że się z nim nie spotkałem smile.gif No ale dobrze bo się czego¶ nowego dowiedziałem i jak sam będę potrzebował walidować formularz to będę wiedział jak uwzględnić polskie znaki:)
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.