可能性の重複:
Check if a variable is a natural numberJavaScriptのJavaScriptのparseInt関数に相当するPHP?
はちょうど私が入力をサニタイズし、PHPですべての数字以外の文字を削除する必要がある場所に出くわしました。機能を自分で作っていると思っていましたが、最初に可能な組み込み関数をチェックしたかったので、余分な時間を費やす必要はありません。
可能性の重複:
Check if a variable is a natural numberJavaScriptのJavaScriptのparseInt関数に相当するPHP?
はちょうど私が入力をサニタイズし、PHPですべての数字以外の文字を削除する必要がある場所に出くわしました。機能を自分で作っていると思っていましたが、最初に可能な組み込み関数をチェックしたかったので、余分な時間を費やす必要はありません。
あなたが
$int = (int) preg_replace('/\D/', '', $strNonNumeric);
OR
$int = (int) preg_replace('/[^0-9]/', '', $strNonNumeric);
あなたは使用することができます。
$string = "90"; //string
$myInt = (int) $string; //parse to int
申し訳ありませんが、それは私が欲しいものではありません。 '(int)'はすべての非数字文字を削除しません。文字列の中に数字以外の文字があれば '0'を返します。 – think123
@ think123:型キャスト '(int)'はjavascriptの 'parseInt()'と同じことをします。これはあなたが尋ねたものですね。 –
ます。また、(あなたがCで行うと同じように)sscanf関数を使用することができます以下のように正規表現を使用することができます
<?php
$str = "10";
sscanf($str, "%d", $intVal);
$intVal *= 10;
echo $intVal;
?>
出力:
私はFILTER_VALIDATE_INTフィルターを使用することをお勧めします。
PHPはNaN
データ型を持っていないので、PHPでpareseInt()
に直接相当するものはありません。値が解析できない場合、parseInt()
はNaN
を生成します。
さらに、parseInt()
にはradixパラメータがありますが、これはPHPオプションのいずれにも該当しません。
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
これらの3つはほぼ同じ方法ですべての動作します:あなたがしたいすべてが整数に文字列を入れている場合
しかし、それは言った、その後、いくつかのオプションがあります。 intval()
が他の2つと異なる場合がありますが、通常は文字列をintに変換します。 NaN
がない場合、文字列が数値ではなく、解析できない場合、それらはすべて0
(ゼロ)を出力します。しかし、これはDBの衛生上の目的のためには十分であるはずです。
実際にNaN
にエラーが発生した場合、最も近い数字はnull
です。あなたはfilter_var()
を使ってこれを取得することができます:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
あなただけの文字列が数値であることを確認したい場合は、is_numeric()
機能はそれを行うことができます。
$bool = is_numeric($string);
しかし、それは小数のためにtrueを返し、またのために科学的な表記法なので、ほとんどの状況で完璧ではないかもしれません。より良いオプションは、文字列が数字のみで構成されている場合はtrueを返しますctype_digit()
です:このスーツの非eは、preg_match()
かpreg_replace()
を使用して、常に正規表現のオプションがあり
$bool = ctype_digit($string);
場合、これらは間違いのために行き過ぎていますこの種のシナリオ。
check [php.net /タイプキャスティング](http://php.net/manual/en/language.types.type-juggling.php) – air4x
なぜintvalを使用しないのですか? – endy