TOP ▲
itcore TOP プログラムパーツ
uIpCheck IPv4の形式チェック OK:true NG:false| itcore 2017年
PHP関数
<?php
// IPv4の形式チェック OK:true NG:false
function uIpCheck($ip) {
// ドットの数が3でなければエラー
$dot = substr_count($ip, ".");
if (3 != $dot) return false;
// 一番先頭が0はエラー
// if ("0" === substr($ip, 0, 1)) return false; // 0.x.x.xもOKにしておく
// それぞれのパートについてチェック
$a_num = explode(".", $ip);
foreach ($a_num as $num) {
//1-3桁以外はエラー
$len = strlen($num);
if ($len < 1 || $len > 3) return false;
//0-9以外はエラー
for ($i = 0; $i < $len; $i++) {
if (false === strpos("0123456789", substr($num, $i, 1))) return false;
}
//"0"以外で先頭が0はエラー 先頭が0だと8進数とみなされる。
if ("0" !== $num && "0" === substr($num, 0, 1)) return false;
//255を超える場合はエラー
if (255 < $num) return false;
}
// OK
return true;
}
?>
単体テスト 実行
<?php include "uIpCheck.func"; ?>
<?php
echo "OK<br>\n";
$ip = "192.168.0.1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "0.0.0.0"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "255.255.255.255"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
echo "NG<br>\n";
$ip = "192168.0.1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "01.168.0.1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "1.2168.0.1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "1.168..1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "1.168.a0.1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "1.168.00.1"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
$ip = "192.168.0.256"; $ret = uIpCheck($ip); echo "ip=$ip ret=$ret<br>\n";
?>
<?php include "uJsClose.func"; print(uJsClose()); // 閉じるボタン ?>