Mit meiner naiven Herangehensweise an RegExp habe ich mir überlegt, dass der Code heißen müsste:
if(!(preg_match('@[a-z0-9]@',$value))) ...
Du hast formuliert.
if = wenn
! Misserfolg
der Suche nach
[a-z0-9] einem Zeichen dieser Klasse
$value in diesem String.
Was du aber möchtest.
Wenn
Erfolg
der Suche nach
[^a-z0-9] ein Zeichen, das nicht der Zeichenklasse [a-z0-9] angehört.
Klar nun, wie du suchen musst?
mfg Beat