小编And*_*ndt的帖子

使用 PHP preg_replace 匿名化 IPv4 和 IPv6 地址?

我需要匿名化 IPv4 和 IPv6 地址,所以我编写了这个粗略的解决方案:

if (strlen($_SERVER['REMOTE_ADDR']) <= 15) {  // Sorry: 15 NOT 12
    echo htmlentities(substr_replace($_SERVER['REMOTE_ADDR'], 'XXX', -3), ENT_QUOTES);
} else {
    echo htmlentities(substr_replace($_SERVER['REMOTE_ADDR'], 'XXXX:XXXX', -9), ENT_QUOTES);
}
Run Code Online (Sandbox Code Playgroud)

它适用于全长 IPv4 和 IPv6 地址,例如

207.142.131.005

2001:0db8:0000:08d3:0000:8a2e:0070:7344

但不是像这样的缩写地址

207.142.131.5

2001:0db8::8d3::8a2e:7:7344

我想知道是否有使用 preg_replace 和一些正则表达式魔法的优雅解决方案?

php regex ipv4 ipv6 preg-replace

3
推荐指数
1
解决办法
1896
查看次数

标签 统计

ipv4 ×1

ipv6 ×1

php ×1

preg-replace ×1

regex ×1