• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IPアドレス拒否処理の正規表現とstr_repla)

IPアドレス拒否処理の正規表現とstr_replace

このQ&Aのポイント
  • IPアドレス拒否処理の条件式の意味が分からない
  • クオートしたIPアドレスに「*」か「?」があれば、「数字*」か「数字」に置き換える
  • その結果が$ip_addrに当てはまるか確認している

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.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) が処理されることになります。

re999
質問者

お礼

回答ありがとうございました。 >DBに拒否するIPアドレスが登録されているという前提で動いているのだと想像します。 >DBには 192.168.0.* といった形で対象のIPアドレスが登録されていて、それと実際にアクセスしてきたIPアドレス($ip_addr)をpreg_matchで比較しています。 >その際、DBに登録されているIPアドレスを正規表現に置き換える処理を行っています。 説明、大変分かりやすかったです。 また、処理毎の説明を解説していただいたので、大変勉強になりましたー

関連するQ&A