Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Sprawdzanie_tekstu]
Forum PHP.pl > Forum > PHP
Zatarra
Napisałem takie funkcje:
  1. function sprLI($zm,$zm1)
  2. {
  3. $out = trim($zm);
  4. preg_match('#[0-9a-zA-Zęó±¶łżĽćĘÓˇ¦ŁŻ¬Ć]+#i', $out, $znak);
  5. print_r($znak);
  6. if(strlen($out) > 20)
  7. {
  8. echo '<b>'.$zm1.' nie może być<br /> dłuższy/e niż 20 znaków!</b><br>';
  9. unset($zm);
  10. $_SESSION['wal'] = 1; // jezeli wystapi jakis warunek oprocz else to znaczy ze jest bł±d - zanzaczamy to w zm. sesyjnej
  11. return 1;
  12. }
  13. elseif( !empty($znak) )
  14. {
  15. echo '<b>'.$zm1.' '.$out.' nie może być z poza przedziału znaków: [a-z],[A-Z],[±ęĽćłó¶ż] i [0-9]!</b><br>';
  16. unset($out);
  17. $_SESSION['wal'] = 1;
  18. return 1;
  19. }
  20. elseif( strpbrk($out,' ') )
  21. {
  22. echo '<b>'.$zm1.' może się składać tylko z 1 wyrazu!</b><br>';
  23. unset($out);
  24. $_SESSION['wal'] = 1;
  25. return 1;
  26. }
  27. elseif(strlen($out) < 3)
  28. {
  29. echo '<b>'.$zm1.' musi być dłuższy\e niż 3 znaki.</b><br>';
  30. $_SESSION['wal'] = 1;
  31. return 1;
  32. }
  33. else
  34. {
  35. return $out;
  36. }
  37. }

Funkcja służy do sprawdzania imienia i loginu z formularza.Dopuszczam polskie znaki diakrytyczne, a ich w ascii nie znajdziemy i nie zrobimy przedziałów tak łatwo jak [0-9a-zA-Z±-ż]. Powyższy kod powoduje że nawet jak wprowadzę Ada¶ to mi wyskakuje że użyłem wyraz z poza przedziału...
$_SESSION['wal'] = 1; // daje jeden jako znak że jest bł±d
return 1; // kończy działanie f-cji
może Ľle napisałem preg_match bo mi nic print_r nie wy¶wietla.
Pozdro
Wicepsik
  1. if(preg_match('#^([a-Ľ0-9]+){3,20}$#i', 'Ada¶')) echo 'OK';
Zatarra
o widzę że już dostałem odpowiedz smile.gif
zrobiłem innym sposobem i działa:
Kod
elseif( !ereg('^[0-9a-zA-Z±ćęłń󶿼ˇĆĘŁŃӦݬ ]+$', $out) )
        {
            echo '<b>'.$zm1.' '.Out.' nie może być z poza przedziału znaków: [a-z],[A-Z],[±ęĽćłó¶ż] i [0-9]!</b><br>';
            unset($out);
            $_SESSION['wal'] = 1;
            return 1;
        }

Jest 1 ale:
ponoć ereg'a nie powinno się używać bo w php-ie 6 nie jest on już wspierany to prawda ?

EDIT.:
Nie działa mi:
Cytat
if(preg_match('#^([a-Ľ0-9]+){3,20}$#i', 'Ada¶')) echo 'OK';

Jak dam Ł ¶ć ˇ to pokazuje mi bł±d..
Wicepsik
Pisałe¶, że musi to być jeden wyraz
Zatarra
tak tak daje jeden wyraz, tylko jak w tym wyrazie znajduj± się powyższe litery to wyskakuje bł±d.
Czyli nie da się zrobić 'preg_match' tak by przepuszczał tylko ˇ¦ĆݬŁÓʱ¶ćżĽęół ?

hmm nie widać żeby kto¶ przegl±dał ten temat to zamykam. ereg() na razie wywi±zał się z zadania choć chciałem to zrobić preg_match().
Rid
Cytat
preg_match('#[0-9a-zA-Zęó±¶łżĽćĘÓˇ¦ŁŻ¬Ć]+#i', $out, $znak);

Ja się jeszcze dziwie że tobie błędu nie wywaliło.
Radziłbym ,poczytać o funkcji preg_match ,bo to co tutaj przedstawiłe¶ wygl±da mi raczej na preg_replace lub inny klon.
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.