reguläre Ausdrücke und Sonderzeichen

Es will irgendwie nicht:

PHP:
if (trim($_POST['search_text'])=='' && !preg_match("/^[A-Za-z0-9]*$/", $_POST['search_text'])) {
 header ("location: ... ");
 exit();
}
else {
 ...
}

Geb ich zB < ein, wird trotzdem gesucht.
 
OK.Ich denke hier ist einfach nur das && falsch. Es müsste doch || lauten!?
ENTWEDER der String ist leer ODER er enthält falsche Zeichen, DANN exit();

PHP:
if (trim($_POST['search_text'])=='' || !preg_match("/^[A-Za-z0-9]*$/", $_POST['search_text'])) {
 echo "falsch";
}
else {
 echo "richtig";
}
 
Der „*“-Quantor sollte noch durch den „+“-Quantor ausgetauscht werden, da derzeit noch ein einzelnes nicht-erlaubtes Zeichen als gültig durchgeht, also:
Code:
^[A-Za-z0-9]+$
 
Dann kann man sogar die erste Bedingung weglassen, da ja auf jeden Fall mindestens ein Zeichen erkannt werden muss, um die if-Bedingung zu erfüllen:
PHP:
if (!preg_match("/^[A-Za-z0-9]+$/", $_POST['search_text'])) { echo "falsch"; }
else { echo "richtig"; }
 
Zurück