Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】FILTER_VALIDATE_INT定数の使い方

FILTER_VALIDATE_INT定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

FILTER_VALIDATE_INT定数は、PHPのフィルタリング機能において、入力された値が有効な整数であるかを検証するために使用される定数です。この定数は、主にfilter_var()関数やfilter_input()関数といったフィルタリング関数に渡す引数として利用されます。

例えば、Webフォームから送られてきたユーザー入力を受け取る際、それが本当に整数であることを確認したい場合に、FILTER_VALIDATE_INTを指定することで、安全かつ簡単にバリデーションを行うことができます。このフィルタは、"123"のような文字列形式の整数も適切に検証しますが、"12.3"のような浮動小数点数や"abc"のような非数値の文字列は整数とはみなしません。

さらに、この定数と組み合わせて、options配列を使用することで、検証に詳細な条件を加えることが可能です。具体的には、min_rangeオプションで最小値を、max_rangeオプションで最大値を指定し、入力値が特定の範囲内の整数であるかを検査できます。

検証が成功した場合、filter_var()関数などはフィルタリングされた整数値を返します。一方、入力値が有効な整数でない、あるいは指定されたオプションの条件を満たさない場合はfalseを返します。これにより、プログラムは不正なデータに対する適切な処理を行うことができ、アプリケーションの堅牢性とセキュリティを高める上で非常に重要な役割を果たします。

構文(syntax)

1<?php
2$value = "123";
3$result = filter_var($value, FILTER_VALIDATE_INT);
4var_dump($result);
5
6$invalidValue = "abc";
7$invalidResult = filter_var($invalidValue, FILTER_VALIDATE_INT);
8var_dump($invalidResult);

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP FILTER_VALIDATE_INT で整数を検証する

1<?php
2
3/**
4 * PHPのFILTER_VALIDATE_INT定数を使用して様々な値を整数として検証するサンプルコード。
5 *
6 * システムエンジニアを目指す初心者向けに、特に数値の0や文字列の"0"が
7 * 有効な整数として認識されることを示します。
8 */
9function validateIntegerExample(): void
10{
11    // 検証対象となる値のリスト。
12    // 各ケースがどのような結果になるかを分かりやすく示します。
13    $testCases = [
14        '数値の 0' => 0,               // キーワード「0」に関連する重要なケース
15        '文字列の "0"' => "0",         // 文字列形式の 0 も有効な整数と判断されます
16        '数値の 123' => 123,
17        '文字列の "123"' => "123",
18        '数値の -45' => -45,
19        '文字列の "-45"' => "-45",
20        '浮動小数点数 3.14' => 3.14,   // 無効なケース: 浮動小数点数は整数ではありません
21        '無効な文字列 "hello"' => "hello", // 無効なケース: 非数値文字列
22        '数字と文字が混ざった文字列 "123a"' => "123a", // 無効なケース: 不適切な形式
23        'NULL 値' => null,             // 無効なケース
24        'ブール値 false' => false,     // 無効なケース: `0`と等価ですが型が異なります
25        'ブール値 true' => true,       // 無効なケース: `1`と等価ですが型が異なります
26        '空文字列 ""' => "",           // 無効なケース
27    ];
28
29    echo "--- FILTER_VALIDATE_INT を使った整数検証の例 ---\n\n";
30
31    foreach ($testCases as $description => $value) {
32        // filter_var 関数を使って、値が整数として有効か検証します。
33        // 第二引数に FILTER_VALIDATE_INT 定数を指定します。
34        // 有効な整数であればその値を、無効であれば boolean の false を返します。
35        $filteredValue = filter_var($value, FILTER_VALIDATE_INT);
36
37        // 結果を分かりやすく出力します。
38        echo "検証対象: " . str_pad($description, 30);
39        echo " | 元の値: " . var_export($value, true) . " (型: " . gettype($value) . ")";
40        
41        if ($filteredValue === false) {
42            echo " | 結果: 無効 (boolean false)\n";
43        } else {
44            // 有効な整数として検証された場合、filter_var はその整数値を返します。
45            echo " | 結果: 有効 -> " . var_export($filteredValue, true) . " (型: " . gettype($filteredValue) . ")\n";
46        }
47    }
48
49    echo "\n補足:\n";
50    echo "  - `FILTER_VALIDATE_INT`は、値が有効な整数と判断された場合、その整数値を返します。\n";
51    echo "  - 値が有効な整数でない場合、厳密に`false`を返します。\n";
52    echo "  - 数値の`0`や文字列の`\"0\"`は、有効な整数として認識されます。\n";
53    echo "  - 浮動小数点数、非数値文字列、`null`、`false`、`true`などは無効と判断されます。\n";
54}
55
56// 関数を実行してサンプルコードの動作を確認します。
57validateIntegerExample();
58
59?>

FILTER_VALIDATE_INTは、PHP 8で利用できる定数の一つで、主にfilter_var関数と組み合わせて、指定された値が有効な整数であるかを検証する際に使用されます。この定数自体には引数も戻り値もありません。

サンプルコードでは、様々な値をfilter_var関数とFILTER_VALIDATE_INTを使って検証する例を示しています。この定数を指定すると、filter_varは、値が整数として正しく記述されているかをチェックします。特に、数値の0や文字列の"0"も有効な整数として認識されます。これは、データ入力の検証において重要なポイントです。

検証の結果、値が有効な整数であれば、filter_varはその整数値を返します。例えば、文字列の"123"は整数123として返されます。一方、浮動小数点数(例: 3.14)、数字以外の文字を含む文字列(例: "hello")、nullfalsetrue、空文字列などは無効と判断され、その場合は厳密にブール値のfalseが返されます。これにより、入力されたデータが期待する整数形式であるかを正確に確認できます。

FILTER_VALIDATE_INTは、値が有効な整数であるかを検証する際に使用します。特に、数値の0や文字列の"0"も有効な整数として認識される点に注意が必要です。filter_var関数で検証した場合、有効な値にはその整数値が、無効な値には厳密にfalseが返されます。そのため、結果を判断する際には=== falseによる厳密な比較が非常に重要です。浮動小数点数、非数値文字列、nulltruefalse、空文字列などはすべて無効と判断されます。これらの挙動を正しく理解し、コードを安全かつ正確に利用することが求められます。

PHPで整数値を検証する

1<?php
2
3/**
4 * 入力値が有効な整数であるかを検証します。
5 *
6 * FILTER_VALIDATE_INT定数を使用し、入力値が整数として解釈できるかどうかをチェックします。
7 * これにより、数値型だけでなく、"123"のような整数形式の文字列も有効と判断されます。
8 *
9 * @param mixed $input 検証する任意の型の値。
10 * @return bool 入力値が有効な整数であれば true、そうでなければ false を返します。
11 */
12function isValidInteger(mixed $input): bool
13{
14    // filter_var()関数とFILTER_VALIDATE_INT定数を使用して、入力値が整数として
15    // 有効かどうかを検証します。
16    // バリデーションが成功した場合、filter_var()はフィルタリングされた値(この場合は元の整数値)を返し、
17    // 失敗した場合は false を返します。
18    // PHPにおいて '0' は false と緩やかに等価になるため、
19    // 有効な整数である '0' が false と誤解されないよう、厳密な比較 (=== または !==) が重要です。
20    $validatedValue = filter_var($input, FILTER_VALIDATE_INT);
21
22    // filter_var()が false を返さない限り、有効な整数と判断します。
23    // これにより、有効な整数である 0 も正しく true と評価されます。
24    return $validatedValue !== false;
25}
26
27// --- サンプル使用例 ---
28
29echo "--- 整数値の検証 ---" . PHP_EOL;
30
31// 1. 有効な整数 (数値型)
32$testValue1 = 123;
33echo "入力: " . $testValue1 . ", 結果: " . (isValidInteger($testValue1) ? "有効" : "無効") . PHP_EOL;
34
35// 2. 0 (有効な整数)
36$testValue2 = 0;
37echo "入力: " . $testValue2 . ", 結果: " . (isValidInteger($testValue2) ? "有効" : "無効") . PHP_EOL;
38
39// 3. 負の整数 (有効な整数)
40$testValue3 = -45;
41echo "入力: " . $testValue3 . ", 結果: " . (isValidInteger($testValue3) ? "有効" : "無効") . PHP_EOL;
42
43// 4. 整数形式の文字列 (有効な整数)
44$testValue4 = "789";
45echo "入力: \"" . $testValue4 . "\", 結果: " . (isValidInteger($testValue4) ? "有効" : "無効") . PHP_EOL;
46
47echo PHP_EOL . "--- 無効な値の検証 ---" . PHP_EOL;
48
49// 5. 浮動小数点数 (無効)
50$testValue5 = 12.34;
51echo "入力: " . $testValue5 . ", 結果: " . (isValidInteger($testValue5) ? "有効" : "無効") . PHP_EOL;
52
53// 6. 浮動小数点数形式の文字列 (無効)
54$testValue6 = "56.7";
55echo "入力: \"" . $testValue6 . "\", 結果: " . (isValidInteger($testValue6) ? "有効" : "無効") . PHP_EOL;
56
57// 7. 文字列 (数字ではないため無効)
58$testValue7 = "abc";
59echo "入力: \"" . $testValue7 . "\", 結果: " . (isValidInteger($testValue7) ? "有効" : "無効") . PHP_EOL;
60
61// 8. 空文字列 (無効)
62$testValue8 = "";
63echo "入力: \"" . $testValue8 . "\", 結果: " . (isValidInteger($testValue8) ? "有効" : "無効") . PHP_EOL;
64
65// 9. NULL (無効)
66$testValue9 = null;
67echo "入力: NULL, 結果: " . (isValidInteger($testValue9) ? "有効" : "無効") . PHP_EOL;
68
69// 10. 論理値 false (無効)
70$testValue10 = false;
71echo "入力: false, 結果: " . (isValidInteger($testValue10) ? "有効" : "無効") . PHP_EOL;
72
73?>

PHPのFILTER_VALIDATE_INTは、入力された値が有効な整数であるかを検証するための定数です。この定数はfilter_var()関数と組み合わせて使用され、数値型の整数だけでなく、「123」のような整数形式の文字列も有効な整数として判断します。

提供されたサンプルコードでは、isValidInteger関数がfilter_var()関数とFILTER_VALIDATE_INT定数を用いて、引数として渡された値が有効な整数かどうかを判定しています。この関数は、検証対象の任意の型の値を受け取り(mixed $input)、有効な整数であればtrueを、そうでなければfalseをブール値で返します(bool)。

filter_var()関数は、検証が成功するとフィルタリングされた値(この場合は元の整数値)を返し、失敗するとfalseを返します。PHPでは、有効な整数である0falseと緩く等価になるため、サンプルコードではfilter_var()の戻り値が厳密にfalseでないかをチェックすることで、0を正しく有効な整数として扱っています。

具体例として、123"789"0のような値は有効な整数と判定されます。一方で、12.34のような浮動小数点数や"abc"のような数字以外の文字列、nullなどは無効と判断されます。これは、ウェブフォームの入力値チェックなど、データが期待する形式であるかを確認する際に非常に役立ちます。

FILTER_VALIDATE_INT定数は、入力値が有効な整数であるかを検証するために使用されます。数値型の整数はもちろん、"123"のような整数形式の文字列も有効と判断される点にご留意ください。最も重要な注意点は、filter_var()関数と組み合わせて使う際の戻り値の扱いです。filter_var()関数は、検証に成功するとフィルタリングされた値を返し、失敗した場合はfalseを返します。このため、有効な整数である0が返された際に、falseと誤解されないよう、戻り値がfalseと厳密に等しくないか(!== false)を確認することが非常に重要です。浮動小数点数や数字以外の文字列は、無効な値と判断されます。

PHP filter_var で整数を検証する

1<?php
2
3/**
4 * PHPの filter_var() 関数と FILTER_VALIDATE_INT 定数を使用して、
5 * 変数が有効な整数であるかを検証するサンプルコードです。
6 *
7 * FILTER_VALIDATE_INT は、入力値が整数形式であるかをチェックするためのフィルターです。
8 * システムエンジニアを目指す初心者が、ユーザー入力の基本的なデータ型検証を
9 * 理解するのに役立ちます。
10 */
11function validateIntegerExample(): void
12{
13    echo "--- 整数値の基本的な検証 ---" . PHP_EOL;
14
15    // 検証する様々な値のリスト
16    $valuesToTest = [
17        '有効な整数文字列' => "123",
18        '有効な整数型'     => 456,
19        '有効な負の整数'   => "-789",
20        '数字以外を含む'   => "123a",    // 無効
21        '浮動小数点数'     => "3.14",    // 無効
22        'スペースを含む'   => "   100   ", // デフォルトでは無効
23        '空文字列'         => "",        // 無効
24        'NULL値'           => null,      // 無効
25        '真偽値 (true)'    => true,      // 無効 (filter_varはboolをintに変換しない)
26    ];
27
28    foreach ($valuesToTest as $description => $value) {
29        // filter_var() を使用して、値が有効な整数であるかを検証します。
30        // 成功した場合、フィルタリングされた値 (整数型) を返します。
31        // 失敗した場合、false を返します。
32        $filteredValue = filter_var($value, FILTER_VALIDATE_INT);
33
34        // 表示用の整形
35        $displayValue = is_null($value) ? 'NULL' : (is_bool($value) ? ($value ? 'true' : 'false') : (string)$value);
36
37        echo sprintf("テスト: '%s' (型: %s, 値: '%s')", $description, gettype($value), $displayValue);
38
39        if ($filteredValue === false) {
40            echo " -> 結果: 無効な整数です。" . PHP_EOL;
41        } else {
42            echo sprintf(" -> 結果: 有効な整数です。フィルタリングされた値: %d (型: %s)%s", $filteredValue, gettype($filteredValue), PHP_EOL);
43        }
44    }
45
46    echo PHP_EOL . "--- オプション (min_range, max_range) を使った検証 ---" . PHP_EOL;
47
48    $valueInRange = 50;
49    $valueOutOfRange = 150;
50    $options = [
51        'options' => [
52            'min_range' => 1,
53            'max_range' => 100,
54        ],
55    ];
56
57    // 範囲内の値の検証
58    $filteredValueInRange = filter_var($valueInRange, FILTER_VALIDATE_INT, $options);
59    echo sprintf("値: '%d' (範囲 1-100)", $valueInRange);
60    if ($filteredValueInRange === false) {
61        echo " -> 結果: 無効な整数です (範囲外)。" . PHP_EOL;
62    } else {
63        echo sprintf(" -> 結果: 有効な整数です。フィルタリングされた値: %d%s", $filteredValueInRange, PHP_EOL);
64    }
65
66    // 範囲外の値の検証
67    $filteredValueOutOfRange = filter_var($valueOutOfRange, FILTER_VALIDATE_INT, $options);
68    echo sprintf("値: '%d' (範囲 1-100)", $valueOutOfRange);
69    if ($filteredValueOutOfRange === false) {
70        echo " -> 結果: 無効な整数です (範囲外)。" . PHP_EOL;
71    } else {
72        echo sprintf(" -> 結果: 有効な整数です。フィルタリングされた値: %d%s", $filteredValueOutOfRange, PHP_EOL);
73    }
74}
75
76// 関数の実行
77validateIntegerExample();
78

PHPのFILTER_VALIDATE_INTは、与えられた値が有効な整数であるかを検証するための定数です。主にfilter_var()関数と組み合わせて使用され、ウェブアプリケーションなどでユーザーからの入力値をチェックする際に非常に重要です。filter_var()関数の第2引数にこの定数を指定すると、入力値が整数形式であるかを確認できます。

サンプルコードでは、さまざまな値が整数として有効かどうかの検証例を示しています。例えば、「123」や数値の456といった有効な整数は、filter_var()によってフィルタリングされた整数値として返されます。これに対し、「123a」のように数字以外の文字を含む文字列や浮動小数点数「3.14」、空文字列などは無効な整数と判断され、filter_var()falseを返します。

また、FILTER_VALIDATE_INTは、オプションとして最小値(min_range)や最大値(max_range)を指定することも可能です。これにより、整数が特定の範囲内にあるかどうかの検証も同時に行え、より厳密なデータチェックが実現できます。この機能は、システムの安定性とセキュリティを向上させる上で不可欠な、基本的なデータ検証の手法の一つです。

PHPのFILTER_VALIDATE_INTは、入力値が有効な整数であるかを検証する際にfilter_var()関数とともに使用します。検証が成功すると整数型の値が返されますが、失敗するとfalseが返されます。このfalseは、数値の0などと混同しないよう、結果の判定には=== falseのように厳密な比較を用いることが非常に重要です。数字以外の文字や小数点、文字列前後の空白を含む値は、原則として無効な整数と判断されます。さらに、min_rangemax_rangeオプションを使うことで、同時に数値の範囲検証も行えるため、ユーザー入力の基本的なデータ型と範囲の安全性を確保するのに役立ちます。

関連コンテンツ