Ich habe eine Funktion isNotEmpty, die true zurückgibt, wenn der String nicht leer ist, und false, wenn der String leer ist. Ich habe herausgefunden, dass es nicht funktioniert, wenn ich eine leere Zeichenfolge durchgehe.
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 wird durchgeführt:
if(isNotEmpty($userinput['phoneNumber']))
{
//validate the phone number
}
else
{
echo "Phone number not entered<br/>";
}
Wenn die Zeichenfolge leer ist, wird der Rest nicht ausgeführt. Ich verstehe nicht warum. Kann jemand bitte etwas Licht in dieses Licht bringen, bitte.
Eigentlich ein einfaches Problem. Veränderung:
if (strTemp != '')
zu
if ($strTemp != '')
Möglicherweise möchten Sie es auch ändern in:
if ($strTemp !== '')
!= ''
wird true zurückgeben, wenn Sie eine numerische 0 und einige andere Fälle übergeben, die auf die automatische Typkonvertierung von PHP zurückzuführen sind.
Sie sollte nicht verwendet dazu die integrierte empty () - Funktion; siehe Kommentare und die Vergleichstabellen des Typs PHP .
PHP hat eine eingebaute Funktion namens empty()
Der Test erfolgt durch Eingabe von if(empty($string)){...}
Referenz php.net: php empty
Ich verwende immer einen regulären Ausdruck für die Suche nach einem leeren String, der auf CGI/Perl-Tage zurückgeht, und auch mit Javascript. Warum also nicht mit PHP, z. (wenn auch nicht getestet)
return preg_match('/\S/', $input);
Dabei steht\S für Nicht-Whitespace-Zeichen
In Ihrer if-Klausel in der Funktion verweisen Sie auf eine Variable 'strTemp', die nicht vorhanden ist. '$ strTemp' existiert jedoch.
Aber PHP hat bereits eine leere () - Funktion zur Verfügung, warum sollte man sich eine eigene machen?
if (empty($str))
/* String is empty */
else
/* Not empty */
Von php.net:
Rückgabewerte
Gibt FALSE zurück, wenn var nicht leer ist und Wert ungleich Null.
Die folgenden Dinge werden als .__ betrachtet. leer sein
* "" (an empty string) * 0 (0 as an integer) * "0" (0 as a string) * NULL * FALSE * array() (an empty array) * var $var; (a variable declared, but without a value in a class)
PHP wertet einen leeren String als falsch aus, sodass Sie einfach Folgendes verwenden können:
if (trim($userinput['phoneNumber'])) {
// validate the phone number
} else {
echo "Phone number not entered<br/>";
}
Verwenden Sie einfach die Funktion strlen ()
if (strlen($s)) {
// not empty
}
Nun, anstatt einer Antwort (ich glaube, Sie haben Ihr Problem bereits behoben), werde ich Ihnen einen Rat geben.
Ich weiß nicht alles, aber ich persönlich ärgere mich über den Anblick von etwas wie:
if(<<condition>>)
{
return true;
}
return false;
dies erfordert eine elegante "return (<<condition>>);
" -Lösung. Sehen Sie sich immer Ihren Code an und entfernen Sie diese Art von Logik. Sie brauchen keine IF-Anweisung für jede Situation.
Ich schreibe einfach meine eigene Funktion, is_string zur Typprüfung und strlen , um die Länge zu überprüfen.
function emptyStr($str) {
return is_string($str) && strlen($str) === 0;
}
print emptyStr('') ? "empty" : "not empty";
// empty
Hier ist ein kleiner Test repl.it
BEARBEITEN: Sie können auch die Funktion trim verwenden, um zu testen, ob die Zeichenfolge ebenfalls leer ist.
is_string($str) && strlen(trim($str)) === 0;
Nun, hier ist die kurze Methode, um zu überprüfen, ob der String leer ist oder nicht.
$input; //Assuming to be the string
if(strlen($input)==0){
return false;//if the string is empty
}
else{
return true; //if the string is not empty
}
wenn Sie ein Feld haben, nämlich Seriennummer, und dann leer markieren wollen
$serial_number = trim($_POST[serial_number]);
$q="select * from product where user_id='$_SESSION[id]'";
$rs=mysql_query($q);
while($row=mysql_fetch_assoc($rs)){
if(empty($_POST['irons'])){
$irons=$row['product1'];
}
auf diese Weise können Sie alle Dateien in der Schleife mit einer anderen leeren Funktion prüfen
Ich musste für ein leeres Feld in PHP testen und verwendet
ctype_space($tempVariable)
was für mich gut funktioniert hat.
Sie können einfach zu bool gießen
(bool)$string;
oder
function isEmpty(string $string): bool {
return (bool)$string;
}
vielleicht kannst du es versuchen
if(isNotEmpty($userinput['phoneNumber']) == true)
das liegt an der php-konfiguration in php.ini
Sie haben eine Antwort, die Sie jedoch verwenden können
return empty($input);
oder
return is_string($input);
Ich weiß, dass dieser Thread ziemlich alt war, aber ich wollte nur eine meiner Funktionen teilen. Diese Funktion kann nach leeren Zeichenfolgen, Zeichenfolgen mit maximalen Längen, minimalen Längen oder exakter Länge suchen. Wenn Sie nach leeren Zeichenfolgen suchen möchten, setzen Sie einfach $ min_len und $ max_len als 0.
function chk_str( $input, $min_len = null, $max_len = null ){
if ( !is_int($min_len) && $min_len !== null ) throw new Exception('chk_str(): $min_len must be an integer or a null value.');
if ( !is_int($max_len) && $max_len !== null ) throw new Exception('chk_str(): $max_len must be an integer or a null value.');
if ( $min_len !== null && $max_len !== null ){
if ( $min_len > $max_len ) throw new Exception('chk_str(): $min_len can\'t be larger than $max_len.');
}
if ( !is_string( $input ) ) {
return false;
} else {
$output = true;
}
if ( $min_len !== null ){
if ( strlen($input) < $min_len ) $output = false;
}
if ( $max_len !== null ){
if ( strlen($input) > $max_len ) $output = false;
}
return $output;
}