Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem Z Wyrazeniami Regularnymi
Forum PHP.pl > Forum > Przedszkole
Guest
niedawno zaczalem bawic sie w wyrazenia regularne i stworzylem ich pare do sprawdzania zmiennych formularza

zrobilem cos takiego:

  1. <?php
  2.  
  3. //chcę aby w tym ciągu znajdowały się tylko duże i małe litery
  4. if (ereg(&#092;"[a-zA-Z]+\", $ciag)) return true;
  5. else return false;
  6.  
  7. //chcę aby w tym ciągu znajdowały się tylko duże i małe litery, spacje oraz apostr
  8. fy '
  9. if (ereg(\"[a-zA-Z ']+\", $ciag)) return true;
  10. else return false;
  11.  
  12. //chcę aby w tym ciągu znajdowały się tylko cyfry
  13. if (ereg(\"[0-9]+\", $ciag)) return true;
  14. else return false;
  15.  
  16. //chcę aby w tym ciągu znajdowały się tylko duże i małe litery, cyfry i apostrofy '
  17. if (ereg(\"[a-zA-Z0-9']+\", $ciag)) return true;
  18. else return false;
  19.  
  20. //chcę aby w tym ciągu znajdowały się tylko duże i małe litery, cyfry, spacje i ap
  21. strofy '
  22. if (ereg(&#092;"[a-zA-Z0-9 ']+\", $ciag)) return true;
  23. else return false;
  24.  
  25. //chcę aby w tym ciągu znajdowały się tylko cyfry, nawiasy (), myślniki - i spacje
  26. if(ereg('[0-9()- ]+', $ciag)) return true;
  27. else return false;
  28. ?>


probowale zamiany znaku ' ' na '[:space:]' ale to nic nie daje

kazdy z tych kodow nie daje mi odpowiedniego wyniku. nie znam sie na wyrazeniach regularnych i pewnie walnalem jakiegos byka.
prosze kogos kto sie na tym zna i poprawil mi to smile.gif
tumczasty
nie jestem pewien, ale może trzeba podopisywać ^ na początku i $ na końcu, żeby uznawało tylko te ciągi, które mają tylko dane znaki, a nie te, które zawierają m.in. dane znaki
delorian
tumczasty ma rację co do ^ i $. Jeśli chodzi o spację to można zawsze dzać "\ ", ale już wogóle to najlepiej jakbyś zaczął używać zamiast wyrażeń POSIX'a wyrażenia PCRE perla. Mają troche dodatkowej składni, ale są mniej zachłanne i jak dla mnie bardziej logiczne niż wyrażenia posixowe.

i tak np.

  1. <?php
  2.  
  3. // litery, liczby i znak _ case insensitive 
  4. if (preg_match(&#092;"|^[w]+$|i\", $ciag)) return true;
  5. else return false;
  6.  
  7. // tylko cyfry
  8. if (preg_match(&#092;"|^[d]+$|i\", $ciag)) return true;
  9. else return false;
  10. ?>


preg_match" title="Zobacz w manualu PHP" target="_manual

Naprawdę polecam wyrażenia PCRE bardziej niż POSIX'a. Ale oczywiście nie zmuszam smile.gif
Guest
dzieki, tak jak myslalem, walnalem byka tongue.gif

mam jeszcze taka funkcje, ale nie wiem czemu wyskakuje mi blad
  1. <?php
  2. function sprawdz_nr_tel($ciag) {
  3. if(ereg('^[0-9()- ]+$', $ciag)) return true; //to jest linia 27
  4. else return false;
  5. }
  6. ?>


i wyskakuje mi
Cytat
Warning: ereg(): REG_ERANGE: in c:\apache\htdocs\phps\aser.php on line 27


a linia 27 to ta z komentarzem z boku

a co teraz skopalem? tongue.gif
tumczasty
czemu nie słuchasz deloriana? spację musisz poprzedzić odwrotnym ukośnikiem (\)
przyjrzyj się perlowym wyrażeniom regularnym i przemyśl, czy ich nie używać (są np. często szybsze); a jak zostaniesz przy ereg(), to tragedii nie powinno być
pozdrawiam
MoD
A zna ktoś kursy wyrażeń perlowych questionmark.gif smile.gif
Luke
Moze Ci sie przyda?
http://etext.lib.virginia.edu/helpsheets/regex.html
MoD
Hmmm... a może coś po polsku smile.gif
Słownik mi wcięło biggrin.gif
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.