如何使用PHP和正则表达式屏蔽/隐藏IP地址(字符串)

Cyb*_*rix 0 php regex

我想使用正则表达式隐藏IP地址的最后两个部分,问题是asterix(*)必须与这些部分的长度匹配.

例如:10.101.12.100应该重新格式化10.101.**.***

这是我正在使用的代码:

echo preg_replace('!(\d+).(\d+).\d+.\d+!s', '${1}.${2}.***.***', "10.101.12.100");
// Return: 10.101.***.***
Run Code Online (Sandbox Code Playgroud)

这可能使用正则表达式吗?

PS:我知道我可以使用它来打破它explode('.', ...),str_repeat('*', strlen(...))但我找到preg_replace了一个更清洁的解决方案.我正在寻找一个"oneliner"解决方案.

Bra*_*tie 7

使用否定前瞻(基本上,正则表达式取消前两个八位字节的资格,然后从之后执行正常的数字替换.)例如

(?!\d{1,3}\.\d{1,3}\.)\d
Run Code Online (Sandbox Code Playgroud)

演示

示例输出:

237.134.85.92 -> 237.134.**.**
173.14.176.182 -> 173.14.***.***
167.209.41.203 -> 167.209.**.***
137.133.204.130 -> 137.133.***.***
93.108.72.157 -> 93.108.**.***
Run Code Online (Sandbox Code Playgroud)