Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Sprawdzanie_tekstu], Czy nie wystąpił niepożądany znak?
Zatarra
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 17.05.2010

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


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





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. if(preg_match('#^([a-ź0-9]+){3,20}$#i', 'Adaś')) echo 'OK';
Go to the top of the page
+Quote Post
Zatarra
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 17.05.2010

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


o widzę że już dostałem odpowiedz (IMG:style_emoticons/default/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..

Ten post edytował Zatarra 10.01.2011, 20:13:48
Go to the top of the page
+Quote Post
Wicepsik
post
Post #4





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Pisałeś, że musi to być jeden wyraz
Go to the top of the page
+Quote Post
Zatarra
post
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 17.05.2010

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


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().

Ten post edytował Zatarra 10.01.2011, 20:32:27
Go to the top of the page
+Quote Post
Rid
post
Post #6





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


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

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: 14.09.2025 - 18:21