このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/php/1168450843/92
#  IPを正規表現でチェックしたいのですが 
#  210.000.111.1〜210.000.111.255 
#  215.100.000.1〜215.100.000.255 
#  の2つに当てはまる場合、TRUE(int1)をかえすにはどうすればいいでしょうか? 
#  以下のようにやってみたのですが他のIPでもint(1)がかえってきます。 
#   
#  preg_match('/^210\.000\.111\.([0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ || ^215\.100\.000\.([0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $_SERVER['REMOTE_ADDR']) 
#   
# 

'IPが210.000.111.1〜210.000.111.255 か 215.100.000.1〜215.100.000.255 の範囲にある'(IP) :-
        split(IP,['.'],[210,0,111,D]),
        D >= 1,
        D =< 255,!.
'IPが210.000.111.1〜210.000.111.255 か 215.100.000.1〜215.100.000.255 の範囲にある'(IP) :-
        split(IP,['.'],[215,100,0,D]),
        D >= 1,
        D =< 255,!.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'IPがある範囲にあるか'(IPの文字列表現,IPの範囲表現) :-
        split(IPの文字列表現,[U1,U2,U3,U4]),
        split(IPの範囲表現,['~'],[IP1,IP2]),
        split(IP1,['.'],[A1,A2,A3,A4]),
        split(IP2,['.'],[B1,B2,B3,B4]),
        U1 >= A1,U1 =< B1,
        U2 >= A2,U2 =< B2,
        U3 >= A3,U3 =< B3,
        U4 >= A4,U4 =< B4,!.