チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【FuelPHP|PHPの正規表現】プレフィックス付IPアドレスを範囲指定して制御する方法

プレフィックス付という時点で範囲指定にはなるんだろうけども。
ぱっと見分かればいいでしょ。

下記はアクセス元IPアドレスを変数に入れて、
そのアドレス以外の場合に503エラーとしている。

許可範囲を一個一個書いていくのはあほだし汚いので下記のようにしてみる。
ただし上手くいってるか検証前なのでメモ程度にお考えください。


        // 開発時はIPチェックしない
        if (\Fuel::$env !== \Fuel::DEVELOPMENT)
        {
            $ipAddress = $_SERVER["REMOTE_ADDR"];
            if ($ipAddress !== "xxx.xxx.xxx.xxx"   //ココは普通に指定

                //100.255.255.0~100.255.255.255まで指定
                && !preg_match('/^100\.255\.255\./',$ipAddress) 

                //111.111.111.160~111.111.111.189と111.111.111.190
                && !preg_match('/^111\.111\.111\.1[6-8][0-9]$|^190$/',$ipAddress) 
            ) {
                header ('HTTP/1.0 503 Service Temporarily Unavailable');
                exit();
            }
        }

プレフィックスが実際に使える範囲を検索するときに便利なサイト

note.cman.jp




あと下記はめちゃ参考にしたので他のブログからのを引用させて頂きました。

PHPの書き方
if(
!preg_match('/^199\.8\./',$_SERVER['REMOTE_ADDR'])
&& !preg_match('/^199\.68\.288\./',$_SERVER['REMOTE_ADDR'])
){
  あああああ
}

正規表現で数字範囲の指定方法。

例えば18から100までなら、

18〜19の数値
1[8-9]

20〜99の数値
[2-9][0-9]

100。

これをorでつなぐ
^1[8-9]$|^[2-9][0-9]$|^100$

年齢制限18歳以上などで使える。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1222723982

正規表現での数字範囲の指定方を教えてください。

例えば1から23まで数字を指定したい場合はどう記述したらよいのでしょう?
1〜9までは0nではなくnでお願いします。

①ひとけたの数値のみを許す場合
[0-9]

②10〜19の数値
1[0-9]

③20〜23の数値
2[0-3]

んで、これをORでつなぐ
^[0-9]|1[0-9]|2[0-3]$