2011-06-13 17 views
4

私は問題があります。私はtxtファイルをスクラップし、IDを抽出しています。問題は、データに一貫性がなく、データを評価する必要があるということです。文字列を整数に変換してテストするには?

$a = "34"; 
$b = " 45"; 
$c = "ddd556z"; 


if () { 

    echo "INTEGER"; 
} else{ 

    echo "STRING"; 
} 

値は、$ bを$や$ cが整数である場合、私はテストが必要になります。ここでは

はいくつかのコードです。これを行う最善の方法は何ですか?私は "トリム"と使用 "is_int"をテストしたが、期待どおりに動作していない。

誰かに私に手がかりを与えることはできますか?

+0

あなたのデータは、この例では、すべての文字列であるとして使用するときはfalseを表示しますis_int($ a)(または$ bまたは$ c) あなたはどんな結果を期待していますか? $ aと$ bは真ですか?次にintにキャストするか、is_numeric()を使用します。しかし、科学的表記法を使用して浮動小数点数、倍数および数値はis_numeric()を使用してtrueと表示されます。 http://php.net/manual/en/function.is-numeric.php – billythekid

答えて

8

次の例では、あなたの "intは" 文字列$a = "number";

is_numeric() 

または

preg_match('/^-?[0-9]+$/' , $var) // negative number © Piskvor 

または

intval($var) == $var 

か(同じであっても動作します最後)

(int) $var == $var 
+0

-1は整数ではありませんか? – Piskvor

+0

pregの例だけが-1を検証しません。他のすべての意志。 – dynamic

+1

@ yes123:[整数](http://en.wikipedia.org/wiki/Integer)。負数に関する部分に注意してください - OPは "正の整数"を指定しませんでしたか? ( '/^- ?[0-9] + $ /') – Piskvor

1
<? 
$a = 34; 
if (is_int($a)) { 
    echo "is integer"; 
} else { 
    echo "is not an integer"; 
} 
?> 
$a="34"; 

intとして検証しません。)

+0

は '$ a =" 34 ";' – dynamic

+0

ええ、私もそれを言いました.. – Vamsi

2

http://www.php.net/manual/en/function.ctype-digit.php

<?php 
$strings = array('1820.20', '10002', 'wsl!12'); 
foreach ($strings as $testcase) { 
    if (ctype_digit($testcase)) { 
     echo "The string $testcase consists of all digits.\n"; 
    } else { 
     echo "The string $testcase does not consist of all digits.\n"; 
    } 
} 

// will output 
//The string 1820.20 does not consist of all digits. 
//The string 10002 consists of all digits. 
//The string wsl!12 does not consist of all digits. 
関連する問題