Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja ereg() w php 5.3.1
Forum PHP.pl > Forum > PHP
uczeń php
podobno ta funkcja została usunięta jakiej funkcji zamiast tej można użyć do sprawdzenia poprawności wzorca np. kodu pocztowego czy adresu e-mail questionmark.gif?
Pawel_W
preg_match
preg_match_all
deniol13
ew strpos które działa dobrze ale wymaga dużych ilości kodu [np by sprawdzic czy string ma poprawną formę emaila]. do niektórych rzeczy można użyć filter_var
Kapitan_Bomba
Witam,
przepraszam że odkopuję temat ale podane linki nie działają a nie mogę znaleźć odpowiedzi na taki sam problem.
Po aktualizacji php do 5.3 mam problem z takim fragmentem kodu.

  1. <?
  2. function sprawdz($email)
  3. {
  4. $email = strtolower($email);
  5. return ereg("^[a-z0-9_\\.-]+@([a-z0-9_-]+\\.)+[a-z]{2,}$", $email);
  6.  
  7.  
  8. }
  9.  
  10. ?>

Czy możecie powiedzieć jak to zmienić żeby działało ?
Pawel_W
podane linki nie działają? a to taki problem skopiować i wkleić do google "preg_match"? closedeyes.gif
Kapitan_Bomba
jeśli chodzi o http://www.php.net/manual/en/function.preg-match.php to znalazłem ale nie wiem jak tego użyć :/

Nie pomożecie ?
Dodam że skrypt pisał dla mnie koleś z ogłoszenia kilka miesięcy temu ale przepadł jak kamfora, nie mam z nim kontaktu a sam rozumiem z tego tyle że ta funkcja sprawdza czy w danym e-mail nie ma nieprawidłowych znaków, szukałem po googglu pół dnia jak to naprawić zanim tu napisałem, wiem że nikt nie ma ochoty odwalać za kogoś pracy domowej i podawać gotowy kod ale dla was to pewnie drobnostka a dla mnie czarna magia :/
abort
ereg i preg_replace są o tyle podobne, że używają wyrażeń regularnych. Ale nie są całkowicie zgodne. Poza tym ereg jest ciut wolniejsze od takiego np. preg_match, które Ci proponuję. Twoje ereg("^[a-z0-9_\\.-]+@([a-z0-9_-]+\\.)+[a-z]{2,}$", $email); powinno dać się zamienić na (uwaga na czerwony kolor):
preg_match("/^[a-z0-9_\\.-]+@([a-z0-9_-]+\\.)+[a-z]{2,}$/", $email);

Oczywiście nie zawsze musi być tak prosto. Poza tym, możesz jeszcze skorzystać z http://www.php.net/manual/en/function.filter-var.php
Kapitan_Bomba
abort - wielkie dziękuje, zadziałało. Czyli tak po chłopsku mówiąc trzeba zmienić nazwę funkcji i wstawiać znaki / po otwarciu cudzysłowowa i przed jego zamknięciem, a jak jest ' zamiast " to tak samo ?
Zmazałem jeszcze

  1. } else if ((ereg('^[a-zA-z]', $login))!=true){

i trzeba zmienić na
  1. } else if ((preg_match('/^[a-zA-z]/', $login))!=true){


Dobrze rozumuję ?
Zrobiłem tak i działa ale wolę się upewnić bo może zepsułem coś innego a jeszcze o tym nie wiem wink.gif

Jeszcze raz dziękuje.
abort
Ogólnie tak. W szczegółach być może trzeba będzie coś pokombinować i/lub pozmieniać.
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.