文字列が空でない場合は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/>";
}
文字列が空の場合、他の文字列は実行されませんが、私はその理由を理解していません。
実は簡単な問題。変化する:
if (strTemp != '')
に
if ($strTemp != '')
間違いなくあなたはそれを次のように変更したいと思うかもしれません。
if ($strTemp !== '')
なぜなら!= ''
はあなたが渡した数値が0である場合、そして PHPの自動型変換 のために他のいくつかのケースでtrueを返すからです。
あなたは組み込みの empty() 関数を使うべきではありません。コメントと PHPタイプの比較表 を参照してください。
PHPにはempty()
と呼ばれる組み込み関数があり、テストはif(empty($string)){...}
と入力することで行われます。参考php.net: php empty
私は常に空の文字列をチェックするために正規表現を使用し、CGI/Perl時代にさかのぼり、Javascriptも使用しています。PHPも同様です。 (テストされていませんが)
return preg_match('/\S/', $input);
\ Sは非空白文字を表します
関数の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)
PHPは空の文字列をfalseと評価するので、単純に次のように使用できます。
if (trim($userinput['phoneNumber'])) {
// validate the phone number
} else {
echo "Phone number not entered<br/>";
}
Strlen()関数を使うだけ
if (strlen($s)) {
// not empty
}
まあ、答えではなく(あなたがすでにあなたの問題を解決したと私は信じています)、私はあなたにアドバイスを提供します。
私は他のすべてについて知っているわけではありませんが、私は個人的に次のようなものを見ると非常にいらいらします。
if(<<condition>>)
{
return true;
}
return false;
これは洗練された "return (<<condition>>);
"ソリューションを必要とします。常にあなたのコードを見て、この種のロジックを削除してください。 everyシチュエーションにはIFステートメントは必要ありません。
これは、文字列が空かどうかを確認するための簡単な方法です。
$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
}
フィールド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'];
}
このようにして、ループ内のすべてのファイルを別の空の関数でチェックすることができます。
PHPの空のフィールドをテストする必要があり、使用しました
ctype_space($tempVariable)
これは私にとってうまくいった。
あなたは単にブールにキャストすることができます
(bool)$string;
または
function isEmpty(string $string): bool {
return (bool)$string;
}
多分あなたはこれを試すことができます
if(isNotEmpty($userinput['phoneNumber']) == true)
これはphp.iniのphp設定のためです
あなたは答えを得ました、しかしあなたの場合あなたは使うことができます
return empty($input);
または
return is_string($input);
私はこのスレッドがかなり古くなっていたことを知っていますが、私は自分の機能の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;
}