Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Mail w wyr. regularnych
Michu
post
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 15.10.2006
Skąd: zewsząd :P

Ostrzeżenie: (0%)
-----


Jak zapisać wyrażenie regularne dla adresu mailowego? Próbowałem już wiele razy, ale za każdym razem ereg() wypluwał false.

Z góry dzięki za odpowiedź, Michu
Powód edycji: Dodałem tag. @drPayton
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function valid_email($str)
  3. {
  4. return ( ! preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
  5. }
  6. ?>


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Michu
post
Post #3





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 15.10.2006
Skąd: zewsząd :P

Ostrzeżenie: (0%)
-----


bardzo dziękuję smile.gif
Go to the top of the page
+Quote Post
werek
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 24.04.2007
Skąd: wwa

Ostrzeżenie: (0%)
-----


Cytat(AxZx @ 16.12.2007, 20:58:24 ) *
  1. <?php
  2. function valid_email($str)
  3. {
  4. return ( ! preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
  5. }
  6. ?>


preg_match sam w sobie zwraca wartosci typu 0 lub 1 czyli false badz true, wiec dodatkowa forma bedzie raczej niepotrzebna. a nawet gdybysmy potrzebowali zeby bylo wszystko "strict" i wogole to nawet wtedy nie potrzebna jest ta negacja przed preg_match (negacja jest stosowana do typu bool!!!). poza tym regexp jest lekko nie konsekwetny "." to dowolny znak!! jezeli chciales stworzyc forme ktora przyjmowala by taka forme to wyrazenie powinno wygladac tak:

  1. <?php
  2. function valid_email($str)
  3. {
  4. return (preg_match("/^[.a-z0-9_-]+@[a-z0-9-_.]+.[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
  5. }
  6. ?>
Go to the top of the page
+Quote Post
Maciekbjw
post
Post #5





Grupa: Zarejestrowani
Postów: 217
Pomógł: 23
Dołączył: 2.12.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jeśli mail dodajesz do bazy, powiedzmy w skrypcie rejestaracji, to rozsądnie jest zastosować coś takiego:
  1. <?php
  2. if(eregi('^[a-zA-Z]+[a-zA-Z0-9_-].*@([a-zA-Z0-9]+){1}(.[a-zA-Z0-9]+){1,2}', stripslashes(trim($_POST['email'])) )){ 
  3.  
  4.  $email = mysql_real_escape_string($_POST['email']);
  5. //zapytanie SQL
  6. }
  7. ?>


To przed zapytaniem.

Ten post edytował Maciekbjw 17.12.2007, 19:16:25


--------------------
Masz swoje mieszkanie i chcesz je wynająć? Sprawdź ofertę Zarzadządzanie Najmem

WRONA.IT - pozycjonowanie stron
www.ecyklopedia.pl
Go to the top of the page
+Quote Post
AxZx
post
Post #6





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


Cytat(werek @ 17.12.2007, 20:57:47 ) *
preg_match sam w sobie zwraca wartosci typu 0 lub 1 czyli false badz true, wiec dodatkowa forma bedzie raczej niepotrzebna. a nawet gdybysmy potrzebowali zeby bylo wszystko "strict" i wogole to nawet wtedy nie potrzebna jest ta negacja przed preg_match (negacja jest stosowana do typu bool!!!). poza tym regexp jest lekko nie konsekwetny "." to dowolny znak!! jezeli chciales stworzyc forme ktora przyjmowala by taka forme to wyrazenie powinno wygladac tak:


ok, idac twoim tropem mozna to zapisac tak:
  1. <?php
  2. function valid_email($str){
  3. return preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $str);
  4. }
  5. ?>


i nie krzycz wiecej bo funkcja ktora podales zwraca zla wartosc - na odwrot tak jakby:P

Cytat
Jeśli mail dodajesz do bazy, powiedzmy w skrypcie rejestaracji, to rozsądnie jest zastosować coś takiego:

a ty nie nabijaj postow:) nikt nie pytal jak dodac adres email do bazy, poza tym eregi jest wolniejsze niz preg.

EDIT:
mozna jeszcze z takim wyrazeniem
  1. <?php
  2. function valid_email($email){
  3. return (bool) preg_match('/^(?!.)[-+_a-z0-9.]++(?<!.)@(?![-.])[-a-z0-9.]+(?<!.).[a-z]{2,6}$/iD', $email);
  4. }
  5. ?>


Ten post edytował AxZx 17.12.2007, 21:23:13


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
werek
post
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 24.04.2007
Skąd: wwa

Ostrzeżenie: (0%)
-----


Cytat(AxZx @ 17.12.2007, 20:55:57 ) *
i nie krzycz wiecej bo funkcja ktora podales zwraca zla wartosc - na odwrot tak jakby tongue.gif

tutaj fakt zlapales mnie, z pospiechu nie zamienilem pozycjami true z false (ale nie badzmi juz tak szczegolowi, mamy robic za kogos czy pomoc mu zrozumiec), poprawnie powinno wygladac tak:
  1. <?php
  2. function valid_email($str)
  3. {
  4. return (preg_match("/^[.a-z0-9_-]+@[a-z0-9-_.]+.[a-z]{2,6}$/ix", $str)) ? TRUE : FALSE;
  5. }
  6. ?>

chociaz zamiast sie tak bawic to polecalbym wykorzytsanie filtrow z zend framework'a tam walidujac email jest jeszcze sprawdzane czy dana domena istniej biggrin.gif co wedlug mnie jest o wiele lepsze
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:26