Bessere Möglichkeit, Variable auf Null oder auf leere Zeichenfolge zu überprüfen?
Da PHP ist eine dynamische Sprache, was ist der beste Weg, zu überprüfen, um zu sehen, ob ein Eingabefeld leer ist?
Möchte ich sicherstellen, dass:
- null ist als eine leere Zeichenfolge
- einem weißen Raum nur string wird als leer
- dass "0" nicht als leere
Dies ist, was ich habe, so weit:
$question = trim($_POST['question']);
if ("" === "$question") {
//Handle error here
}
Muss es einen einfacheren Weg, dies zu tun?
Kommentar zu dem Problem
Ich würde sagen, zu verwenden empty($Frage), aber das sieht auch 0 leer zu sein.
yoda Bedingungen sind schrecklich
InformationsquelleAutor der Frage Allain Lalonde | 2008-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Michael Haren
Alte post, aber jemand könnte es brauchen, wie ich es Tat 😉
ersetzen
$str
mit Ihrer Variablen.NULL
und""
beiden geben 0 zurück, wenn mitstrlen
.InformationsquelleAutor der Antwort jrowe
PHP ' s empty () - Funktion. Die folgenden Dinge werden als leer zu sein
Für mehr details überprüfen Sie leeren-Funktion
InformationsquelleAutor der Antwort kta
Werde ich demütig akzeptieren, wenn ich falsch Liege, aber getestet habe ich auf mein eigenes Ende und festgestellt, dass die folgenden arbeiten für die Prüfung sowohl string(0) "" und NULL-Variablen geschätzt:
Könnte auch Umgekehrt werden, um zu testen, für den Erfolg als solchen:
InformationsquelleAutor der Antwort Adal
Vorsicht vor falsch-negative aus der
trim()
Funktion — es führt einen cast-string vor dem trimmen und somit zurückkehren wird, z.B. "Array", wenn Sie übergeben Sie ein leeres array. Das kann nicht ein Problem sein, je nachdem, wie Sie Ihre Daten verarbeiten, aber mit dem code, den Sie liefern, ein Feld mit dem Namenquestion[]
versorgt werden könnten, in der POST-Daten und erscheinen zu einem nicht-leeren string. Stattdessen würde ich vorschlagen:InformationsquelleAutor der Antwort Ben Blank
Es gibt keinen besseren Weg, aber da es eine operation, die Sie normalerweise tun ziemlich oft, würden Sie besser automatisieren den Prozess.
Meisten frameworks bieten einen Weg, um Argumente parsing eine einfache Aufgabe. Sie können bauen Sie eigene Objekt. Quick-and-dirty-Beispiel :
Symfony verwenden, die Art von Zucker Massiv.
Aber du redest mehr als das, mit dem "//Handle error hier
". Mischen Sie 2 Aufträge : abrufen der Daten und die Verarbeitung. Dies ist nicht das gleiche überhaupt.
Gibt es andere Mechanismen, die Sie verwenden können, um Daten zu validieren. Wieder, frameworks können Ihnen zeigen best pratices.
Objekte erstellen, die die Daten repräsentieren Ihre form, fügen Sie dann processses und fallen auf ihn zurück. Es klingt viel mehr Arbeit, dass hacken eine schnelle PHP-Skript (und es ist das erste mal), aber es ist wiederverwendbar, flexibel und sehr viel weniger fehleranfällig, da der Validierung von Formularen mit den üblichen PHP-neigt dazu, schnell zu spaguetti code.
InformationsquelleAutor der Antwort e-satis
Dieser prüft, arrays und Saiten:
InformationsquelleAutor der Antwort Chris Clower
Wenn Sie überprüfen möchten, ob ein Wert für ein Feld, dieses Feld kann eine
string
einearray
oder undifined. So, das folgende ist genugInformationsquelleAutor der Antwort PHPst
empty() verwendet, um für diese Arbeit, aber das Verhalten von empty() hat mehrfach gewechselt. Wie immer, die php-docs sind immer die beste Quelle für genaue Verhalten und die Kommentare auf diesen Seiten bieten in der Regel einen guten Verlauf der Veränderungen über die Zeit. Wenn Sie möchten, um zu überprüfen, ob ein Mangel an Objekt-Eigenschaften, eine sehr defensive Methode im moment ist:
InformationsquelleAutor der Antwort Daenarys