こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、14年目エンジニアです。
この記事では、 PHPでfilter_var関数を使ってIPアドレスかどうか判定を
- サンプルプログラム
- 実行結果
- プログラム解説
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
XAMPPのバージョン | 8.2.4 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
phpプログラムは
C:\xampp\htdocs
配下に、【sample.php】というファイル名で格納しています。
サンプルプログラムの概要
- IPv4アドレスの文字列
- IPv6アドレスの文字列
- IPアドレスでもない文字列
の3つの文字列に対して、判定させて結果を表示させます。
phpプログラムは
C:\xampp\htdocs
配下に、【sample.php】というファイル名で格納しています。
IPアドレスかどうか判定するサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php function isIP($ip) { if (filter_var($ip, FILTER_VALIDATE_IP) !== false) { return $ip . 'は有効なIPアドレスです<br>'; } else { return $ip . 'は有効なIPアドレスではありません<br>'; } } function isIPv4($ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) { return $ip . 'は有効なIPv4アドレスです<br>'; } else { return $ip . 'は有効なIPv4アドレスではありません<br>'; } } function isIPv6($ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) { return $ip . 'は有効なIPv6アドレスです<br>'; } else { return $ip . 'は有効なIPv6アドレスではありません<br>'; } } print("■filter_var関数でIPアドレスを判定するサンプルプログラム問題<br>"); print("・「192.0.2.0」を判定した場合<br>"); print(isIP("192.0.2.0")); print(isIPv4("192.0.2.0")); print(isIPv6("192.0.2.0")); print("<br>"); print("・「1111:2222:3333::4444:5555:6666」を判定した場合<br>"); print(isIP("1111:2222:3333::4444:5555:6666")); print(isIPv4("1111:2222:3333::4444:5555:6666")); print(isIPv6("1111:2222:3333::4444:5555:6666")); print("<br>"); print("・「sample.com」を判定した場合<br>"); print(isIP("sample.com")); print(isIPv4("sample.com")); print(isIPv6("sample.com")); ?> |
実行結果
XAMPPを起動して、【http://localhost/sample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
与えた
- IPv4アドレスの文字列
- IPv6アドレスの文字列
- IPアドレスでもない文字列
が、それぞれ判定できていることを確認できました。
プログラム解説
サンプルプログラムの解説を
- filter_var関数の基本構文
- filter_var関数のオプション
で解説していきます。
filter_var関数の基本構文
「FILTER_VALIDATE_IP」は、PHPのフィルターでIPアドレスかどうかをチェックする定数です。
filter_var関数は、第二引数に「FILTER_VALIDATE_IP」が指定された場合、第一引数に与えられた文字列がIPv4アドレスまたはIPv6アドレスのフォーマットだった場合、第一引数に指定された値をそのまま返します。
どちらのフォーマットでもなかった場合は、「false」を返します。
サンプルプログラムでは
1 |
filter_var($ip, FILTER_VALIDATE_IP) |
で与えられた文字列がIPv4アドレスまたはIPv6アドレスなのかを判定しています。
filter_var関数のオプション
filter_var関数は、オプションとして第三引数も指定することができます。
サンプルプログラムだと
- FILTER_FLAG_IPV4
- FILTER_FLAG_IPV6
ですね。
これを指定した場合、FILTER_FLAG_IPV4はIPv4アドレスのみ、FILTER_FLAG_IPV6はIPv6アドレスのみであるかどうかを判定できます。
よりIPアドレスを絞り込みたいときに指定すると便利です。
サンプルプログラムではIPv4アドレスのみの判定は
1 |
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) |
IPv6アドレスのみの判定は
1 |
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) |
でそれぞれ判定しています。
まとめ:IPアドレスかどうか判定してみよう!
以上がPHPでfilter_var関数を使ってIPアドレスかどうか判定するサンプルプログラムでした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント