Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Eregi - czy się nadaje
Forum PHP.pl > Forum > PHP
MadMark
Witam,

Pisałem dzisiaj jakiś kod i chciałem sprawdzić czy zmienna $_POST['log'] zawiera jakieś "znaki niedozwolone" - inne niż literki i cyferki (bez polskich znaków etc).
Czy kod:
  1. if( !eregi("^([0-9a-z-A-Z]{0,10})?",$_POST['log']))
  2. {
  3. zawiera znaki specjalne
  4. }
  5. else
  6. {
  7. nie zawiera znaków specjalnych
  8. }

jest poprawny?
Ponieważ mnie zwraca błąd:
Kod
Warning: eregi() [function.eregi]: REG_ERANGE in [...]


I nie wiem ocb. Jeśli nie tak, to jak inaczej sprawdzić czy zmienna zawiera znaki inne niż a-zA-Z0-9 ?
markonix
Cytat
Warning

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
cycofiasz
  1. if(preg_match("#[^0-9a-zA-Z]#",$_POST['log']))
MadMark
Cytat(cycofiasz @ 17.12.2010, 23:32:24 ) *
  1. if(preg_match("#[^0-9a-zA-Z]#",$_POST['log']))

Poniekąd pomogło.
Tylko teraz, ten warunek zwróci prawdę czy fałsz jeśli zawiera znaki specjalne?
cycofiasz
bez zmian czyli PRAWDĘ, a konkretnie (int) 1
MadMark
Czyli mam rozumieć, że jeśli dam kod:
  1. if( preg_match("#[0-9a-z-A-Z]#",$_POST['log']) )
  2. {
  3. print 'zawiera znak specjalny';
  4. }
  5. else
  6. {
  7. print 'nie zawiera znaków specjalnych';
  8. }

to będzie bankowo dobrze?
cycofiasz
nie, zmieniłeś kod który podałem.

przetestuj sobie różne wartości i się sam przekonasz czy jest dobrze
MadMark
Dobra, już sprawdziłem co tam będzie, konkretniej musi być tak:
  1. if(preg_match("#([^0-9a-z-A-Z])#",$_POST['log']))
  2. {
  3. print 'zawiera znaki specjalne';
  4. }


Bo inaczej cały czas będzie pokazywać 1 lub 0 nieważne czy z czy bez specjalnych znaków. smile.gif
Dzięki za pomoc.
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.