Ich habe eine Funktion isNotEmpty, die true zurückgibt, wenn die Zeichenfolge nicht leer ist, und false, wenn die Zeichenfolge leer ist. Ich habe herausgefunden, dass es nicht funktioniert, wenn ich eine leere Zeichenfolge durchlaufe.
function isNotEmpty($input)
{
$strTemp = $input;
$strTemp = trim($strTemp);
if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
{
return true;
}
return false;
}
Die Validierung der Zeichenfolge mit isNotEmpty erfolgt:
if(isNotEmpty($userinput['phoneNumber']))
{
//validate the phone number
}
else
{
echo "Phone number not entered<br/>";
}
Wenn die Zeichenfolge leer ist, wird das andere nicht ausgeführt. Ich verstehe nicht, warum. Kann jemand bitte etwas Licht ins Dunkel bringen?
php
string
validation
bgosalci
quelle
quelle
Antworten:
Einfaches Problem eigentlich. Veränderung:
zu
Möglicherweise möchten Sie es auch ändern in:
Da
!= ''
wird true zurückgegeben, wenn Sie die numerische 0 und einige andere Fälle aufgrund der automatischen Typkonvertierung von PHP übergeben .Sie sollten hierfür nicht die integrierte Funktion empty () verwenden. Siehe Kommentare und die PHP-Typvergleichstabellen .
quelle
PHP hat eine eingebaute Funktion namens
empty()
Der Test wird durch Eingabe vonif(empty($string)){...}
Referenz php.net: php leer durchgeführtquelle
Ich verwende immer einen regulären Ausdruck, um nach einer leeren Zeichenfolge zu suchen, die auf CGI / Perl-Tage zurückgeht, und auch mit Javascript. Warum also nicht auch mit PHP, z. B. (wenn auch nicht getestet)?
Wobei \ S ein beliebiges Nicht-Leerzeichen darstellt
quelle
.
stimmen keine neuen Zeilen überein -[\s\S]
ist ein Hack um dieses Problem. Dies ist in JavaScript üblich, aber in PHP können Sie das/s
Flag verwenden, um den Punkt mit allen Zeichen abzugleichen. Und stackoverflow.com/a/4544646/5411817 erwähnt: Schaltet(?s)
dens
Modus ein und aus,(?-s)
wenn er ausgeschaltet ist. Nach dem Ausschalten.
stimmt eine der folgenden Zeilen nicht mit einer neuen Zeile überein. Wenn Sie den Schalter inline (eingebettet in den regulären Ausdruck) ein- und ausschalten möchten, anstatt als regulärer Ausdruck.In Ihrer
if
Klausel in der Funktion verweisen Sie auf eine VariablestrTemp
, die nicht vorhanden ist.$strTemp
existiert jedoch.Aber PHP hat schon eine
empty()
Funktion zur Verfügung; warum deine eigenen machen?Von php.net:
http://www.php.net/empty
quelle
PHP wertet eine leere Zeichenfolge mit false aus, sodass Sie einfach Folgendes verwenden können:
quelle
Verwenden Sie einfach die Funktion strlen ()
quelle
Php 5.3
die Funktion zurückkehrt,5
wenn$s
vom Typ istarray
.Php > 5.3
wird eine Ausnahme erheben. Ich empfehle die Verwendungis_string($s) && str_len($s) > 0
.>0
nur zum Lesen.Ich schreibe einfach meine eigene Funktion, is_string zur Typprüfung und strlen zur Überprüfung der Länge.
Hier ist ein kleiner Test repl.it
BEARBEITEN: Sie können auch die Trimmfunktion verwenden, um zu testen, ob die Zeichenfolge ebenfalls leer ist.
quelle
Ich musste in PHP auf ein leeres Feld testen und benutzte
das hat gut für mich funktioniert.
quelle
Nun, hier ist die kurze Methode, um zu überprüfen, ob die Zeichenfolge leer ist oder nicht.
quelle
strlen()
wurde 2014 auf dieser Seite empfohlen. Ihre Antwort bringt keinen neuen Wert.Sie können einfach zu bool werfen, vergessen Sie nicht, mit Null umzugehen.
quelle
(bool)$str
ist das gleiche wie zu tun!empty($str)
und hat das gleiche Problem mit'0'
. Lesen Sie PHP Booleans , den Abschnitt "Konvertieren in Boolean". Auch hast du es rückwärts - sollte sein!(bool)$string'
. Oder Ihre Funktion sollte "isNotEmpty" heißen. Unabhängig davon stecken Sie mit der falschen Behandlung von '0' fest.0
Problem behandeln Sie dies einfach, bevor Sie den gegossenen String zurückgeben. Und vielen Dank, ich habe die Negation vergessen!
(negierte Funktionsnamen sind schlechte Praxis). Meinen Beitrag bearbeitet.Ich weiß, dass dieser Thread ziemlich alt war, aber ich wollte nur eine meiner Funktionen teilen. Diese Funktion unten kann nach leeren Zeichenfolgen, Zeichenfolgen mit maximaler Länge, minimaler Länge oder genauer Länge suchen. Wenn Sie nach leeren Zeichenfolgen suchen möchten, geben Sie einfach $ min_len und $ max_len als 0 ein.
quelle
Vielleicht kannst du das versuchen
das liegt an der php konfiguration in php.ini
quelle
Wenn Sie ein Feld haben, nämlich serial_number, und dann leer prüfen möchten
Auf diese Weise können Sie alle Dateien in der Schleife mit einer anderen leeren Funktion überprüfen
quelle
empty()
wurde bereits 2009 auf dieser Seite empfohlen.Dies ist die kurze und effektive Lösung, genau das, wonach Sie suchen:
quelle
null
zum Vergleich in eine leere Zeichenfolge konvertiert . In diesem Fall wäre es viel klarer zu sagen, was Sie meinen :$input > ''
. Das heißt, "Führen Sie einen lexikalischen Vergleich zwischen der Eingabezeichenfolge und einer leeren Zeichenfolge durch". Oder um Leerzeichen an den Enden zu ignorieren :trim($input) > ''
.$input
ist'0'
. Nicht klar, ob PHP einennumeric
oder einenlexical
Vergleich durchführt, wenn das erste Argument eine numerische Zeichenfolge ist.Sie haben eine Antwort erhalten, aber in Ihrem Fall können Sie verwenden
oder
quelle
empty("0")
empty
- Diese Antwort wurde bereits gegeben, daher trägt es nichts dazu bei, sie noch einmal zu sagen. Schlimmer noch, wie in den Kommentaren besprochen wurde, ist es falsch - jeder Wert, der äquivalent zu ist,0
wird als "leer" betrachtet. 2.is_string
ist auf andere Weise falsch - eine leere Zeichenfolge''
ist eine Zeichenfolge, gibt also in diesem Fall true zurück - kann die gestellten Fragen nicht erfüllen.