當前位置: 首頁> 最新文章列表> 如何使用preg_match函數來驗證IP地址,保證格式正確且有效?

如何使用preg_match函數來驗證IP地址,保證格式正確且有效?

gitbox 2025-08-27
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 這部分與文章內容無關,可以放置一些PHP註釋或無關代碼</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"歡迎閱讀PHP教程!"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n--------------------------------------------------\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

如何使用preg_match函數來驗證IP地址,保證格式正確且有效?

在PHP中,`preg_match`函數是用來進行正則表達式匹配的一個非常強大的工具。當我們需要驗證用戶輸入的IP地址是否格式正確時,`preg_match`可以快速完成這項任務。本文將詳細講解如何使用它驗證IPv4和IPv6地址。

</span><span><span class="hljs-comment">### 1. IPv4地址驗證</span></span><span>

IPv4地址由四段數字組成,每段數字的範圍是</span><span><span class="hljs-number">0</span></span><span>到</span><span><span class="hljs-number">255</span></span><span>,中間用點號分隔,例如:</span><span><span class="hljs-number">192.168</span></span><span>.</span><span><span class="hljs-number">0.1</span></span><span>。為了確保格式和有效性,我們可以使用如下正則表達式:

```php
</span><span><span class="hljs-variable">$ipv4_pattern</span></span><span> = </span><span><span class="hljs-string">"/^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/"</span></span><span>;
</span><span><span class="hljs-variable">$ip</span></span><span> = </span><span><span class="hljs-string">"192.168.1.100"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-variable">$ipv4_pattern</span></span><span>, </span><span><span class="hljs-variable">$ip</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IPv4地址格式正確"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IPv4地址格式不正確"</span></span><span>;
}
</span></span>

解釋:

  • 25[0-5]匹配250-255

  • 2[0-4][0-9]匹配200-249

  • 1[0-9]{2}匹配100-199

  • [1-9]?[0-9]匹配0-99

  • ((...)\.){3}...確保有四段數字且中間用點分隔

2. IPv6地址驗證

IPv6地址格式更加複雜,由8組16進制數字組成,每組用冒號分隔。一個簡單的正則表達式示例如下:

 <span><span><span class="hljs-variable">$ipv6_pattern</span></span><span> = </span><span><span class="hljs-string">"/^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/"</span></span><span>;
</span><span><span class="hljs-variable">$ip</span></span><span> = </span><span><span class="hljs-string">"2001:0db8:85a3:0000:0000:8a2e:0370:7334"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-variable">$ipv6_pattern</span></span><span>, </span><span><span class="hljs-variable">$ip</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IPv6地址格式正確"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IPv6地址格式不正確"</span></span><span>;
}
</span></span>

3. 實用小技巧

  1. 如果你希望同時驗證IPv4和IPv6,可以使用filter_var函數,它內置了IP驗證功能:

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">filter_var</span></span><span>(</span><span><span class="hljs-variable">$ip</span></span><span>, FILTER_VALIDATE_IP)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IP地址有效"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IP地址無效"</span></span><span>;
}
</span></span>
  1. 在處理用戶輸入時,始終注意去除空格和無效字符,避免因前後空格導致匹配失敗:

 <span><span><span class="hljs-variable">$ip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$ip</span></span><span>);
</span></span>
  1. 對於大量IP地址的批量驗證,可以結合循環和preg_match ,高效檢查每一個輸入。

總結

使用preg_match結合精確的正則表達式,可以驗證IP地址格式是否正確且有效。對於IPv4,重點在於數字範圍和段數;對於IPv6,重點在於十六進制組和冒號分隔。掌握這些技巧,能夠讓你的PHP程序在處理網絡地址時更加安全和可靠。

 <span></span>