Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_match i akceptacja liter/cyfr/spacji etc.
messmaker
post 12.07.2009, 11:16:29
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


Witam,

potrzebuję funkcji do filtrowania wprowadzanych przez użytkownika danych. Do tej pory mam:

Przepuszcza tylko litery:
  1. <?php
  2. if (preg_match("/[^A-z_-]/", $username)==1) { $errors++;  $errorlist .= "<br>W loginie znajdują się niedozwolone znaki.";  }
  3. ?>

Przepuszcza tylko litery i cyfry:
  1. <?php
  2. if (preg_match("/[^A-z0-9_-]/", $username)==1) { $errors++;  $errorlist .= "<br>W loginie znajdują się niedozwolone znaki.";  }
  3. ?>

Potrzebuję jeszcze wersji dla przepuszczania liter, cyfr i spacji i osobnej dla przepuszczania liter, cyfr, spacji i znaków nowej linii (najlepiej tak, żeby nie akceptowały tabulacji). Mile widziane gotowe rozwiązania, ale wskasówkami też nie pogardzę wstydnis.gif
Go to the top of the page
+Quote Post
kefirek
post 12.07.2009, 11:19:40
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


  1. <?php
  2. $username = 'tra tra';
  3. if (!preg_match("/^[-0-9A-Z_@s]+$/i", $username)) {
  4. echo 'W loginie znajdują się niedozwolone znaki';
  5. }
  6. ?>


Ten post edytował kefirek 12.07.2009, 11:21:04
Go to the top of the page
+Quote Post
messmaker
post 12.07.2009, 11:40:21
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


Sprawdziłem, nie przepuszcza spacji - przepuszcza bez niej.
Go to the top of the page
+Quote Post
Wicepsik
post 12.07.2009, 12:14:15
Post #4





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

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


To dodaj spacje w preg_match

  1. <?php
  2. $username = 'tra tra';
  3. if (!preg_match("/^[-0-9A-Z_ @s]+$/i", $username)) {
  4. echo 'W loginie znajdują się niedozwolone znaki';
  5. }
  6. ?>


--------------------
Go to the top of the page
+Quote Post
messmaker
post 12.07.2009, 12:18:44
Post #5





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


bingo, jeszcze tylko poproszę o dodanie akceptacji znaków nowej linii, próbowałem dodać /n@s ale więcej to namieszało niż pomogło mellow.gif
Go to the top of the page
+Quote Post
Wicepsik
post 12.07.2009, 12:24:34
Post #6





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

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


\n


--------------------
Go to the top of the page
+Quote Post
messmaker
post 12.07.2009, 12:28:49
Post #7





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


ani
  1. <?php
  2. $username = 'tra tra
  3. ';
  4. if (!preg_match("/^[-0-9A-Z_ @s\n]+$/i", $username)) {
  5. echo 'W loginie znajdują się niedozwolone znaki';
  6. }
  7. ?>

ani
  1. <?php
  2. $username = 'tra tra
  3. ';
  4. if (!preg_match("/^[-0-9A-Z_ @s\n@s]+$/i", $username)) {
  5. echo 'W loginie znajdują się niedozwolone znaki';
  6. }
  7. ?>

Nie działają tak jak powinny. Próbowałem też z _ przed \n, ale również nie przepuszcza blinksmiley.gif
Go to the top of the page
+Quote Post
Wicepsik
post 12.07.2009, 12:33:50
Post #8





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

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


  1. <?php
  2. if (!preg_match("/^[-0-9A-Z_ @sr\n]+$/i", $username)) {
  3. echo 'W loginie znajdują się niedozwolone znaki';
  4. }
  5. ?>


Na linuxach chyba jest \r\n a na windowsach \n lub odwrotnie ;P

Ten post edytował Wicepsik 12.07.2009, 12:34:42


--------------------
Go to the top of the page
+Quote Post
messmaker
post 12.07.2009, 12:40:42
Post #9





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


ohmy.gif pierwsze widzę, żeby interpretacja PHP zależała od systemu. Tak czy inaczej działa - wielkie dzięki! smile.gif

ostateczna wersja to:
  1. <?php
  2. $username = 'tra tra
  3. ';
  4. if (!preg_match("/^[-0-9A-Z_ @sr\n]+$/i", $username) && !preg_match("/^[-0-9A-Z_ @s\n]+$/i", $username)) {
  5. echo 'W loginie znajdują się niedozwolone znaki';
  6.  
  7. ?>



EDIT: windows ma \r\n bankowo winksmiley.jpg

Ten post edytował messmaker 12.07.2009, 12:41:38
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 16:03