ereg und preg_match?

Opmil

Grünschnabel
Hallo Leute

Hab da mal eine frage zu den Funktionen ereg und preg_match.
Sind die Suchmuster eigentlich verschieden? Weil ja..sind beides sehr mächtige Funktionen. Nur leider verstehe ich sie nicht ganz.
Dachte, ich mache mal ein kleines Testscript. Wollte überprüfen ob eine Eingabe wirklich nur Text ist. Also kein "!" oder sonst irgendein Sonderzeichen.

Mein Code bis dahin:
PHP:
$str = $_POST['name'];
if(!preg_match("/[^a-z]$i/", $str)){
  return false;
}
return true;

und noch mit ereg:
PHP:
$str = $_POST['name'];
if(!eregi("^[a-z]$", $str)){
  return false;
}
return true;

Warum klappt das nicht? Kann mir das jemand genau erklären, sprich wie ich die Expressions richtig anwenden muss?

Besten Dank und Gruss
Opmil
 
In deiner preg_match-Lösung sind 2 gravierende Denkfehler, ich schreib es mal in Pseudo-Code zum besseren Verständnis:

1. wenn kein match von nicht-a-bis-z ... dann (doppelte verneinung)
2. Der case-insensitive-Modifier kommt hinter den Delimiter.

Richtiger wäre
PHP:
if( preg_match('/[^a-z]/i', $text) ) {
   echo "Etwas gefunden, was kein Buchstabe ist";
}

In deinem ereg-Beispiel prüfst du lediglich ob am Anfang und am Ende des Strings Buchstaben stehen. Wenn das Sonderzeichen in der Mitte des Strings, ist der Match trotzdem nicht wirksam.
 
Zuletzt bearbeitet:
Zurück