Formularfeld prüfen

Guten Tag,

das ist bestimmt ganz einfach, aber ich komme nicht drauf,
Wie kann ich $_POST[‘feld’] dahingehend prüfen ob nur Leerzeichen im Feld sind.
Ich weiß wie ich Leerzeichen ausschließe, aber dann sind gar keine erlaubt.

Eine Eingabe mit nur Leerzeichen (Space) soll nicht erlaubt sein, aber “text text text” soll erlaubt sein.

Bitte um Hinweiße
GuckstDu sagt Danke

Am einfachsten und m.E. zweckmaeszigsten - Feldinhalt mit trim() behandeln (denn Whitespace am Anfang und Ende will man ja idR. auch nicht), und dann schauen, ob mehr als ein Leerstring “” uebrig geblieben ist.


gibt true zurück wenn nicht nur whitespace drinn sind und fals wenn nur whitespace enthalten ist

gibt true zurück wenn nicht nur whitespace drinn sind und fals wenn nur whitespace enthalten ist

Hallo Agent 47 und Chrisb,

ich denke preg_match ist es was ich suche.

$zeichenkette = " "; if(!preg_match('#^\s*$#', $zeichenkette)) { echo "Es wurde keine Übereinstimmung gefunden."; } else { echo "Es wurde eine Übereinstimmung gefunden."; }

so müsste es doch klappen?
Danke
GuckstDu

Ich muss noch etwas fragen.

if(preg_match('#^\s*$#', $_POST['erstesFeld'])) { $error[0] =" Fehler im erstesFeld"; } if(preg_match('#^\s*$#', $_POST['zweitesFeld'])) { $error[1] =" Fehler im zweitesFeld"; } if(preg_match('#^\s*$#', $_POST['drittesFeld'])) { $error[2] =" Fehler im drittesFeld"; }

kann ich das irgenwie komprimieren , dass ich alle Formularfelder mit einmal abfrage, aber einzeln und eine allgemeine Fehlermeldung ausgebe?
Wenn ich
$pruefefeld=$_POST[‘erstesFeld’].$_POST[‘zweitesFeld’].$_POST[‘drittesFeld’];
und $pruefefeld überprüfe müssen ja alle Felder leer sein, dass ist es also nicht.

Vielen Dank
GuckstDu

nimm ne foreach schleife und lasse das ganze post array durchlaufen

Hallo Agent,

kannst du mir das bitte etwas genauer erklären?

Danke

wozu preg_match?

reicht nicht sowas?

if(trim($_POST['feldxyz']) == "") { //leer }else{ //nicht leer }

trim() entfernt sämtliche Whitespaces am Anfang und Ende einer Zeichenkette.
Wenn es nur aus solche besteht, bleibt eben nichts mehr übrig.

Meiner Meinung nach übernimmt trim() die Fragestellung im ersten Beitrag besser als preg_match.

mfg Balmung

das $_POST ist ein array und kann auch so verarbeitet werden, d.h. du kannst einfach über eine foreach schleife verarbeiten.

foreach($_POST as $key => $value) {
   if(!preg_match('#^\s*$#', $value) {
      $error[] = $key;
   }
}

!Ungetestet!

damit stehen dann alle leeren felder im array $error und als inhalt steht der name des feldes.

Hi Agent,

[code]

<?php

foreach($_POST as $key => $value) {
if(preg_match(’#^\s*$#’, $value)) {
if ( $key != “”){ $error[0]=“bitte keine leeren Felder”;}
}
}
echo $error[0];

?>[/code]

Ich habe hier mal ein ganz kleines Testform.
Wenn ich nicht irre, passt das, nur es ist ich habe nicht !preg_match.
Ist das trotzdem OK?
Ich bin noch am Anfang mit PHP und deswegen unsicher

GuckstDu sagt Danke

Sag du’s uns - bekommst du denn das gewuenschte Ergebnis?

Wenn dir klar ist, was das ! da bedeutet - dann wirst du ja auch wissen, ob es an der Stelle weggelassen gehoert, oder nicht.

Ich denke ich weiß es.
Das Ausrufezeichen am Anfang ist eine logische Negation (ich weiß es, verstehe es aber nicht ganz)
\s Erkennt Whitespaces wie Leezeichen.
Das würde bedeuten, der Ausdruck ist wahr, wenn der auf das Ausrufezeichen nicht wahr ist.
Im Umkehrschuss, der Ausdruck ist wahr wenn preg_match wahr ist.
:qst:

GuckstDu

das ! negiert boolsche werte als macht aus true false und umgekehrt.

der reguläre ausdruck:

-> begrenzer gefordert durch PCRE

^ -> Zeilenanfang
\s -> Whitespache (leerzeuchen, tabulator … also alle nicht druckenden zeichen)

  • -> Das voherigeszeichen (also \s) darf mind 0x und max unbegrenzt oft vorkommen
    $ -> Zeilenende

-> begrenzer gefordert durch PCRE

funktion
prüft ob zwischen zeilenanfang und ende keine oder nur whitespacezeichen vorhanden sind

Hallo Agent,

danke.
Es funktioniert.

GuckstDu