便利なFilter関数を使いこなそう その4
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
ヒューマンリソシア株式会社はコラム「便利なFilter関数を使いこなそう その4」を公開しました。
今回も検証フィルタの続きです。
今回は、ネットワークに関連するものを見ていきましょう。
まずは「IPアドレス表記であるか」を確認する FILTER_VALIDATE_IP をみていきます。
function hoge($s) {
$options = array(
);
var_dump($s);
var_dump(filter_var($s, FILTER_VALIDATE_IP, $options));
echo "\n";
}
//
hoge('localhost'); // false
hoge('127.0.0.1');
hoge('127.0.0.256'); // false
hoge('2001:0db8:bd05:01d2:288a:1fc0:0001:10ee');
hoge('2001:db8::9abc');
hoge('::9abc');
hoge('2001::db8::9abc'); // false
IPv6もお手のもの、省略表記も適切に解釈してくれます。「2箇所省略したらNGだよ」という規約が
遵守されているのは、’2001::db8::9abc’がfalseであることによって理解できるかと思います。
これだけでも十分に便利なのですが、フラグによって「IPv4のみ」「IPv6のみ」の指定も可能です。
function hoge($s) {
$options = array(
'flags' => FILTER_FLAG_IPV4
);
var_dump($s);
var_dump(filter_var($s, FILTER_VALIDATE_IP, $options));
echo "\n";
}
//
hoge('localhost');
hoge('127.0.0.1');
hoge('127.0.0.256');
hoge('2001:0db8:bd05:01d2:288a:1fc0:0001:10ee');
hoge('2001:db8::9abc');
hoge('::9abc');
hoge('2001::db8::9abc');
IPv6は、定数「FILTER_FLAG_IPV6」を渡せばOKです。
またさらに「プライベートアドレスはNG」「予約済みアドレスはNG」という、範囲まで見てくれるフラグがあります。
function hoge($s) {
$options = array(
// プライベートアドレスの範囲はNG
'flags' => FILTER_FLAG_NO_PRIV_RANGE
);
var_dump($s);
var_dump(filter_var($s, FILTER_VALIDATE_IP, $options));
echo "\n";
}
//
hoge('127.0.0.1');
hoge('192.168.0.1'); // false
hoge('50.60.70.80');
この続きは以下をご覧ください
http://resocia.jp/column/5255/
ソーシャルもやってます!