php - 在 PHP 中同时屏蔽 IPv4 和 IPv6
问题描述
我试图能够在 PHP 中同时屏蔽 IPv4 和 IPv6 字符串的最后一部分。我的意思是,192.168.0.1 或 192.168.0.255 都会显示 192.168.0.XXX 和 2001:0db8:85a3:0000:0000:8a2e:0370:7334 会变成 2001:0db8:85a3:0000:0000: 8a2e:0370:XXX
这在PHP中可能吗?我知道使用 IPv4 我可以做到这一点:
preg_replace('/([0-9]+\\.[0-9]+\\.[0-9]+)\\.[0-9]+/', '\\1.xxx', $text);
有了这个,我可以专门屏蔽 IPv4,但因为我对 Regex 不太熟悉,所以我很难弄清楚这一点。
解决方案
用于|
创建具有备选方案的模式。
preg_replace('/((?:\d{1,3}\\.){3}|(?:[\da-f]{1,4}:){7})(?:[\da-f]{1,4}|\d{1,3})/', '$1xxx', $text);
请注意,这不适用于缩写的 IPv6 地址,因为它专门检查 8 个十六进制数字块。处理这个问题留给读者作为练习。
推荐阅读
- vba - 如果 ContentControl 输入未得到答复,则为 MsgBox
- mysql - 计算过去 7 天在 mysql 中的平均时间
- flutter - Firestore 类“QuerySnapshot”没有实例方法“[]”
- php - flutter multiple postwith php api问题[已解决]
- git - GitHub 问题:提交/推送重复的 Java Spring 根文件夹到不同的存储库
- docker - Docker动态IP、Server ip白名单
- php - SQL - 将数据从一个表列复制到另一个表列
- greenplum - Greenplum 与 mysql 性能对比
- redux - 如何修改我的减速器以获取商店产品的频率?
- python - pytorch:随机分类器:ValueError:优化器得到一个空参数列表