wake-up-neo.com

Überprüfen, ob die Zeichenfolge leer ist

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.

184
bgosalci

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 .

264
cletus

PHP hat eine eingebaute Funktion namens empty() Der Test erfolgt durch Eingabe von if(empty($string)){...} Referenz php.net: php empty

33
Malak

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

16
George Jempty

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)

http://www.php.net/empty

15
Björn

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/>";
}
12
troelskn

Verwenden Sie einfach die Funktion strlen ()

if (strlen($s)) {
   // not empty
}
9
justyy

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.

3
Peter Perháč

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;    
3
svarog

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
}
2
abhishek bagul

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

0
user2042007

Ich musste für ein leeres Feld in PHP testen und verwendet

ctype_space($tempVariable)

was für mich gut funktioniert hat.

0
TRayman

Sie können einfach zu bool gießen

(bool)$string;

oder

function isEmpty(string $string): bool {
   return (bool)$string;
}
0
Fabian Picone

vielleicht kannst du es versuchen

if(isNotEmpty($userinput['phoneNumber']) == true)

das liegt an der php-konfiguration in php.ini

0
0xFF

Sie haben eine Antwort, die Sie jedoch verwenden können 

return empty($input);

oder 

return is_string($input);
0
geekido

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;
}
0
Kevin Ng