Reguläre Ausdrücke wollen nicht!

multimolti

Erfahrenes Mitglied
Moin.

Ich möchte PHP prüfen lassen, ob in ein Textfeld mehr als nur Leerzeichen eingegeben wurde, und wenn nicht eine Fehlermeldung ausgeben lassen.
Die Eingabe ist in $titel gespeichert, aber auch wenn ich 10 Leerzeichen eingebe kommt nicht die Fehlermeldung!
Ich habe das so gemacht:
PHP:
    if ($titel == "" or $titel == "^[:space:]*$")
    	{ echo 'Keinen Titel angegeben!<br><a href="javascript:history.back()">zur&uuml;ck</a>'; }
    else {
        // tu was
        }
das "^[:space:]*$" müsste doch heißen:
Anfang String - beliebige Anzahl Leerzeichen - Ende String.
Nur irgendwie funktioniert das nicht, wo ist der Fehler?
 
Zuletzt bearbeitet:
Mach es dir einfacher... [phpf]trim[/phpf] entfernt alle Leerzeichen (und div. andere, siehe php.net) am Anfang und Ende eines Strings. Besteht er nur aus Leerzeichen, wird er danach leer ([phpf]empty[/phpf]) sein.
PHP:
$titel = trim($titel);
if(empty($titel))
{
    // ...
}
 
> $titel == "^[:space:]*$")

Wie kommst du denn auf sowas
Mal Beispiele zu Regex angeschaut ?
 
öhm also ich habe diese Website hier gefunden:
http://www.drweb.de/php/regulaere-ausdruecke.shtml

und da steht ja:
^ Anfang eines Strings
$ Ende eines Strings
n* Kein oder mehrfaches Vorkommen von 'n'
[:space:] Leerzeichen

und dann habe ich da eben draus gemacht:
Anfang - Leerzeichen - mehrfaches Vorkommen - Ende
und das ergibt dann ja ^[:space:]*$

und hier hat das auch schon mal (so ähnlich) geklappt:
PHP:
if (eregi("^.*en$", $verb))
wenn er "<irgendwas>en" findet, soll er was tun
 
Schonmal meinen Code angeschaut? Wenn es denn unbedingt mit RegEx laufen soll, probier mal folgendes...
PHP:
/(\s)*/

Außerdem fehlt bei deinem Code oben die Funktion...
PHP:
if (empty($titel) || preg_match("~^[:space:]*$~", $titel)
        { echo 'Keinen Titel angegeben!<br><a href="javascript:history.back()">zur&uuml;ck</a>'; }
 
Zuletzt bearbeitet:
> öhm also ich habe diese Website hier gefunden:

Da steht aber kein Beispiel dafür, wie du es gemacht hast.
siehe preg_match() etc... :-)
eregi() bzw. ereg() sind veraltet.
 
öhm naja...
also ich habe jetzt mal das hier in den Code geschrieben:
PHP:
    if (empty($titel) || preg_match("~^[:space:]*$~", $titel))
    	{ echo 'Keinen Titel angegeben!<br><a href="javascript:history.back()">zur&uuml;ck</a>'; }
Wenn ich jetzt keinen Titel angebe, geht das mit dem empty() gut, aber ich habe dann mal zum Test 5 Leerzeichen rein gemacht, und dann kam diese Warnung:
Warning: preg_match() [function.preg-match]: Compilation failed: POSIX named classes are supported only within a class at offset 1 in <PFAD>\<DATEI>.php on line 37

und untendrunter stand trotzdem "Beitrag erfolgreich gespeichert!", das heißt das er trotzdem macht, was in der else{ } drin steht.
 
Hallo,

wozu brauchst du denn den regulären Ausdruck jetzt noch? Mit [phpf]empty[/phpf] überprüfst du doch schon, ob der String leer ist…

Grüße,
Matthias
 
hmm nagut, ich habe es jetzt einfach mit dem trim() gemacht, das geht wunderbar.
Aber noch eine Frage:
Was ist RexEx?
Bei google hab ich gefunden:
REXEX - Limiting text checking to first part of a message
 
Zurück