2017-06-08 10 views
0

クライアントからのユーザー入力を処理するために使用したいスクリプトがあります。私はいくつかの小切手を持っていますが、最初のものは提出された文字列を数値にする必要があります。 php ctype_digitは文字列であるかどうかを知らせない

この

はコード

<?php 
$num = '09201x11222'; 

//Check whether the string is numeric 
function test($str){ 
    return ctype_digit($str); 
} 

echo test($num); 

echo '<br/><br/><br/>'; 

//Check if the length is exactly 10 characters 
$len = strlen($num); 
if($len < 10 || $len > 10){ 
    echo 'that number is wrong'; 
} 
elseif($len == 10){ 
    echo 'that number is of required length'; 
} 
echo '<br/><br/><br/>'; 
//Trim Leading Zero 
$afterTrim = substr($num,1); 

echo $afterTrim; 

//Append countrycode 380 
echo '<br/><br/><br/>'; 

$countryCode = '380'; 
$afterAppend = $countryCode.$afterTrim; 

echo $afterAppend; 

?> 

$numが正しいですが、私は、画面上の1を取得しますが、そのが間違って私は全く何も得るとき。何故ですか?

答えて

0

エコーするfalseは、「無効」という結果になります。これは、echoがブール値を文字列表現にキャストする必要があるためです。 trueあれば、それはそれ以外の場合は何も印刷されません、1が印刷されます:あなたはメソッドのシグネチャから

bool ctype_digit (string $text) 

を見ることができます

ように、これはエコーによって変換されたブール値を返します。

manualからブール値TRUEは、文字列 "1" に変換されます。 Boolean FALSEは ""(空文字列)に変換されます。これにより、ブール値と文字列値の間の変換が可能になります。

+0

エラーをどのようにキャッチしますか? –

+0

@Mongodbあなたはそれを直接エコーするのではなく、 'true'または' false'をチェックし、適切なメッセージを出力してください。 – DonCallisto

+0

私はこの 'echo test($ num)をしましたか? 'true': 'false'; ' –

関連する問題