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
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. ?>
Go to the top of the page
+Quote Post
werek
post
Post #3





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
AxZx
post
Post #4





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
Go to the top of the page
+Quote Post

Posty w temacie
- Michu   [php] Mail w wyr. regularnych   16.12.2007, 20:51:45
- - AxZx   [PHP] pobierz, plaintext <?phpfunction valid_em...   16.12.2007, 20:58:24
|- - werek   Cytat(AxZx @ 16.12.2007, 20:58:24 ) [...   17.12.2007, 18:57:47
|- - AxZx   Cytat(werek @ 17.12.2007, 20:57:47 ) ...   17.12.2007, 20:55:57
|- - werek   Cytat(AxZx @ 17.12.2007, 20:55:57 ) i...   18.12.2007, 08:32:51
- - Michu   bardzo dziękuję   16.12.2007, 21:01:03
- - Maciekbjw   Jeśli mail dodajesz do bazy, powiedzmy w skry...   17.12.2007, 19:15:34


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

 



RSS Aktualny czas: 10.10.2025 - 13:30