- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IPアドレス拒否処理の正規表現とstr_repla)
IPアドレス拒否処理の正規表現とstr_replace
このQ&Aのポイント
- IPアドレス拒否処理の条件式の意味が分からない
- クオートしたIPアドレスに「*」か「?」があれば、「数字*」か「数字」に置き換える
- その結果が$ip_addrに当てはまるか確認している
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
たぶん、DBに拒否するIPアドレスが登録されているという前提で動いているのだと想像します。 DBには 192.168.0.* といった形で対象のIPアドレスが登録されていて、それと実際にアクセスしてきたIPアドレス($ip_addr)をpreg_matchで比較しています。 その際、DBに登録されているIPアドレスを正規表現に置き換える処理を行っています。 DBに入っているIPアドレスが 192.168.0.* だとすると、まず preg_quote($out['ip_addr']) で 192\.168\.0\.\* とクオート処理されます。 その後、str_replace で 192\.168\.0\.[0-9]* と置換されます。 その結果、preg_match('#^192\.168\.0\.[0-9]*$#', $ip_addr) が処理されることになります。 またDBに入っているIPアドレスが 192.168.0.10? だとすると、まず preg_quote($out['ip_addr']) で 192\.168\.0\.10\? とクオート処理されます。 その後、str_replace で 192\.168\.0\.10[0-9] と置換されます。 その結果、preg_match('#^192\.168\.0\.10[0-9]$#', $ip_addr) が処理されることになります。
お礼
回答ありがとうございました。 >DBに拒否するIPアドレスが登録されているという前提で動いているのだと想像します。 >DBには 192.168.0.* といった形で対象のIPアドレスが登録されていて、それと実際にアクセスしてきたIPアドレス($ip_addr)をpreg_matchで比較しています。 >その際、DBに登録されているIPアドレスを正規表現に置き換える処理を行っています。 説明、大変分かりやすかったです。 また、処理毎の説明を解説していただいたので、大変勉強になりましたー