ugrás a tartalomhoz

űrlap ellenőrzés

Castor87 · 2007. Júl. 13. (P), 19.00
Üdv!
Az alábbi kóddal ellenőrzöm az egyik mezőt:

if($valtozo == (!eregi('^[a-zA-Z0-9 -öÖüÜóÓőŐúÚéÉáÁűŰíÍ]+$',$valtozo)))

Elméletileg az lenne a dolga, hogy csak a magyar abc betűit(ékezetest is!), számokat, szóközt, kötőjelet engedélyezzen. Viszont minden további nélkül írhatok bele ? , + jeleket és nem kapok hibaüzenetet.

Mit rontottam el??
 
1

szerintem

juhasztibi · 2007. Júl. 13. (P), 20.42
Szerintem így működni fog:
if(!eregi('^[a-zA-Z0-9 -öÖüÜóÓőŐúÚéÉáÁűŰíÍ]+$',$valtozo))
T.

http://www.php.net/eregi
2

eddig is működött így

Castor87 · 2007. Júl. 13. (P), 21.47
Igazából a működésével semmi gond nincs, szerintem a feltételek sorrendjével lehet a gond. Nem tudom miért enged meg néhány karaktert, amiket nem kéne...
Más mezőket ugyanezzel a módszerrel vizsgáltam meg, pl irányítószámban csak szám lehet, stb. azok jól működnek...
3

Kötőjel

Rici · 2007. Júl. 13. (P), 22.08
Reguláris kifejezésben karakterfelsoroláson belül (vagyis [ ] szögletes zárójelek között) a - karakternek is speciális jelentése van, escapelni kell.

A te reguláris kifejezésedben az van, hogy a szóköz és ö közötti karakterkódú összes karakter elfogadott. Amúgy nem érezted a logikai inkonzisztenciát, amikor egyszer tartomány megadására használtad a kötőjelet a reguláris kifejezésben, egyszer meg normál karakterként?

A legegyszerűbb megoldás, ha a kötőjelet a felsorolás elejére teszed, így normál karakterként értelmeződik: '^[-a-zA-Z0-9 öÖüÜóÓőŐúÚéÉáÁűŰíÍ]+$'
4

ezaz! :)

Castor87 · 2007. Júl. 13. (P), 22.15
Köszi szépen!
Ez lesz a megoldás. Felmerült a kötőjeles dolog, de nem tudtam a helyes megoldást.

még1x köszi!