Da PHP eine dynamische Sprache ist, wie kann am besten überprüft werden, ob ein bereitgestelltes Feld leer ist?
Ich möchte sicherstellen, dass:
- null wird als leere Zeichenfolge betrachtet
- Eine Zeichenfolge, die nur aus Leerzeichen besteht, wird als leer betrachtet
- dass "0" nicht als leer betrachtet wird
Das habe ich bisher:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Es muss einen einfacheren Weg geben, dies zu tun?
php
validation
Allain Lalonde
quelle
quelle
Antworten:
quelle
Alter Beitrag, aber jemand könnte ihn so brauchen wie ich;)
durch
$str
deine Variable ersetzen .NULL
und""
beide geben bei Verwendung 0 zurückstrlen
.quelle
if(strcmp('', $var) == 0)...
Verwenden Sie die leere () Funktion von PHP. Die folgenden Dinge gelten als leer
Für weitere Details überprüfen Sie die leere Funktion
quelle
Ich werde demütig akzeptieren, wenn ich falsch liege, aber ich habe es selbst getestet und festgestellt, dass das Folgende zum Testen von Variablen mit Zeichenfolgen (0) "" und NULL funktioniert:
Was auch umgekehrt werden könnte, um den Erfolg als solchen zu testen:
quelle
Hüten Sie sich vor falschen Negativen aus der
trim()
Funktion - sie führt vor dem Zuschneiden eine Umwandlung in einen String durch und gibt daher z. B. "Array" zurück, wenn Sie ein leeres Array übergeben. Dies ist möglicherweise kein Problem, je nachdem, wie Sie Ihre Daten verarbeiten. Mit dem von Ihnen angegebenen Code kann jedoch ein Feld mit dem Namenquestion[]
in den POST-Daten angegeben werden und scheint eine nicht leere Zeichenfolge zu sein. Stattdessen würde ich vorschlagen:quelle
Es gibt keinen besseren Weg, aber da es sich um eine Operation handelt, die Sie normalerweise häufig ausführen, sollten Sie den Prozess besser automatisieren.
Die meisten Frameworks bieten eine Möglichkeit, das Parsen von Argumenten zu einer einfachen Aufgabe zu machen. Sie können dafür ein eigenes Objekt erstellen. Schnelles und schmutziges Beispiel:
Symfony verwendet diese Art von Zucker massiv.
Aber Sie sprechen über mehr als das, mit Ihrem "// Fehler hier behandeln". Sie mischen zwei Jobs: Abrufen und Verarbeiten der Daten. Das ist überhaupt nicht dasselbe.
Es gibt andere Mechanismen, mit denen Sie Daten validieren können. Auch hier können Frameworks Ihnen die besten Praktiken zeigen.
Erstellen Sie Objekte, die die Daten Ihres Formulars darstellen, hängen Sie dann Prozesse an und greifen Sie darauf zurück. Es klingt viel mehr Arbeit als das Hacken eines schnellen PHP-Skripts (und es ist das erste Mal), aber es ist wiederverwendbar, flexibel und viel weniger fehleranfällig, da die Formularvalidierung mit normalem PHP schnell zu Spaguetti-Code wird.
quelle
Dieser überprüft Arrays und Strings:
quelle
Um robuster zu sein (Tabellierung, Rückgabe…), definiere ich:
Quellen:
quelle
Wenn Sie überprüfen möchten, ob für ein Feld ein Wert angegeben ist, kann dieses Feld a
string
, anarray
oder undifined sein. Das Folgende ist also genugquelle
empty () hat früher dafür gearbeitet, aber das Verhalten von empty () hat sich mehrmals geändert. Wie immer sind die PHP-Dokumente immer die beste Quelle für genaues Verhalten, und die Kommentare auf diesen Seiten bieten normalerweise einen guten Verlauf der Änderungen im Laufe der Zeit. Wenn Sie nach fehlenden Objekteigenschaften suchen möchten, ist derzeit eine sehr defensive Methode:
quelle