web-dev-qa-db-ja.com

文字列が空かどうか調べる

文字列が空でない場合はtrue、文字列が空の場合はfalseを返す関数isNotEmptyがあります。空の文字列を渡すとうまくいかないことがわかりました。

function isNotEmpty($input) 
{
    $strTemp = $input;
    $strTemp = trim($strTemp);

    if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
    {
         return true;
    }

    return false;
}

IsNotEmptyを使った文字列の検証が行われます。

if(isNotEmpty($userinput['phoneNumber']))
{
    //validate the phone number
}
else
{
    echo "Phone number not entered<br/>";
}

文字列が空の場合、他の文字列は実行されませんが、私はその理由を理解していません。

198
bgosalci

実は簡単な問題。変化する:

if (strTemp != '')

if ($strTemp != '')

間違いなくあなたはそれを次のように変更したいと思うかもしれません。

if ($strTemp !== '')

なぜなら!= ''はあなたが渡した数値が0である場合、そして PHPの自動型変換 のために他のいくつかのケースでtrueを返すからです。

あなたは組み込みの empty() 関数を使うべきではありません。コメントと PHPタイプの比較表 を参照してください。

278
cletus

PHPにはempty()と呼ばれる組み込み関数があり、テストはif(empty($string)){...}と入力することで行われます。参考php.net: php empty

33
Malak

私は常に空の文字列をチェックするために正規表現を使用し、CGI/Perl時代にさかのぼり、Javascriptも使用しています。PHPも同様です。 (テストされていませんが)

return preg_match('/\S/', $input);

\ Sは非空白文字を表します

19
George Jempty

関数のif節で、存在しない変数 'strTemp'を参照しています。ただし、 '$ strTemp'は存在します。

しかしPHPにはすでに空の()関数があります。

if (empty($str))
    /* String is empty */
else
    /* Not empty */

Php.netから:

戻り値

Varの値が空でもゼロでもない場合はFALSEを返します。

次のものは空と見なされます。

* "" (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

16
Björn

PHPは空の文字列をfalseと評価するので、単純に次のように使用できます。

if (trim($userinput['phoneNumber'])) {
  // validate the phone number
} else {
  echo "Phone number not entered<br/>";
}
14
troelskn

Strlen()関数を使うだけ

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

まあ、答えではなく(あなたがすでにあなたの問題を解決したと私は信じています)、私はあなたにアドバイスを提供します。

私は他のすべてについて知っているわけではありませんが、私は個人的に次のようなものを見ると非常にいらいらします。

if(<<condition>>)
    {
         return true;
    }

    return false;

これは洗練された "return (<<condition>>);"ソリューションを必要とします。常にあなたのコードを見て、この種のロジックを削除してください。 everyシチュエーションにはIFステートメントは必要ありません。

3
Peter Perháč

私は単に型チェックのために is_string そして長さのチェックのために strlen 私自身の関数を書くだけです。

function emptyStr($str) {
    return is_string($str) && strlen($str) === 0;
}

print emptyStr('') ? "empty" : "not empty";
// empty

これは小さなテストrepl.itです

編集:文字列も空白かどうかをテストするために trim 関数を使うこともできます。

is_string($str) && strlen(trim($str)) === 0;    
3
svarog

これは、文字列が空かどうかを確認するための簡単な方法です。

$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

フィールドserial_numberがあり、空にしたい場合は

$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'];
}

このようにして、ループ内のすべてのファイルを別の空の関数でチェックすることができます。

0
user2042007

PHPの空のフィールドをテストする必要があり、使用しました

ctype_space($tempVariable)

これは私にとってうまくいった。

0
TRayman

あなたは単にブールにキャストすることができます

(bool)$string;

または

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

多分あなたはこれを試すことができます

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

これはphp.iniのphp設定のためです

0
0xFF

あなたは答えを得ました、しかしあなたの場合あなたは使うことができます

return empty($input);

または

return is_string($input);
0
geekido

私はこのスレッドがかなり古くなっていたことを知っていますが、私は自分の機能の1つを共有したいだけでした。以下のこの関数は、空の文字列、最大長の文字列、最小長の文字列、または正確な長さをチェックできます。空の文字列をチェックしたい場合は、$ min_lenと$ max_lenを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