dポイントプレゼントキャンペーン実施中!

こんにちは。現在、掲示板などに使うアクセス制限ライブラリを作っています。
やりたいことは、制限したいIPアドレスのリストを作り、そのリストの中に接続元のIPが含まれているかどうかを調べたいのです。
制限したいIPアドレスのリストには、IPアドレスの範囲表現(?)を使うことができるようにしたいと考えています。

例:
$deny[0] = 'xxx.11.11.11';
$deny[1] = 'xxx.11.22.33';
$deny[2] = 'xxx.11.33.*';

上記の「*」のようにです。

ここで、
$ip = 'xxx.11.33.12';
が、$denyに含まれているかどうかを調べたいのです。
正規表現を使うのかとも考えましたが、なかなか理解できません。
もし、お分かりになりましたら回答よろしくお願いいたします。

A 回答 (1件)

多分こんな感じではないかと。

。。

if(preg_match ("/xxx\.11\.33\.\d*/i", $ip)) {
#ふくまれてる
} else {
#ふくまれてない
}

参考URL:http://www2.famille.ne.jp/~akio1998/l_grep.html
    • good
    • 0
この回答へのお礼

ありがとうございます。参考になりました。

=============================================
$deny[0] = '11.11.11.11';
$deny[1] = '11.11.22.33';
$deny[2] = '11.11.33.*';

$ip = '11.11.33.4';

foreach ($deny as $value)
{
$str = str_replace('*', '\d*', $value);

if(preg_match ('/'.$str.'/i', $ip))
{
#ふくまれている
}
else
{
#ふくまれてない
}
}
=============================================
としたところ、「11.11.33.*」のみがマッチすることを確認しました。自分は正規表現の基礎から勉強する必要がありますね^_^;
URLも参考になります。
ありがとうございました。

お礼日時:2005/09/10 12:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!