You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从IP数组的所有值中去除CIDR标记?

移除IP数组中的CIDR标记(/32)解决方案

我来帮你搞定这个问题!你现在的代码只是把逗号分隔的字符串拆成了数组,但每个元素还带着/32标记,甚至可能有多余的空格,咱们一步步来修正:

先看你的初始代码

$ip_addresses = "1.1.1.1/32, 2.2.2.2/32, 3.3.3.3/32";
$ip_addresses_stripped_array = explode(",", $ip_addresses);

运行这段代码后,数组里的元素会是["1.1.1.1/32", " 2.2.2.2/32", " 3.3.3.3/32"]——不仅有/32,第二个和第三个元素前面还有空格,得一起处理掉。

方法1:简单直接(只针对/32的情况)

用array_map遍历数组,先去掉每个元素的前后空格,再替换掉/32:

$ip_addresses = "1.1.1.1/32, 2.2.2.2/32, 3.3.3.3/32";
// 第一步:拆分字符串为数组
$ip_array = explode(",", $ip_addresses);
// 第二步:处理每个元素
$ip_addresses_stripped_array = array_map(function($ip) {
    // 先清理前后空格,再移除/32标记
    return str_replace('/32', '', trim($ip));
}, $ip_array);

// 可以打印结果验证
print_r($ip_addresses_stripped_array);

运行后得到的数组就是干净的IP:["1.1.1.1", "2.2.2.2", "3.3.3.3"]

方法2:更通用(支持任意CIDR前缀)

如果以后你的IP可能带其他前缀(比如/24、/16),用正则表达式提取IP部分更稳妥:

$ip_addresses = "1.1.1.1/32, 2.2.2.2/24, 3.3.3.3/16";
$ip_array = explode(",", $ip_addresses);
$ip_addresses_stripped_array = array_map(function($ip) {
    // 正则匹配提取/之前的IP部分,同时自动忽略前后空格
    preg_match('/^\s*([0-9\.]+)\s*\/.*$/', trim($ip), $matches);
    // 兜底处理:如果匹配失败(比如没有/),就返回清理空格后的原IP
    return $matches[1] ?? trim($ip);
}, $ip_array);

print_r($ip_addresses_stripped_array);

这个方法不管后面跟的是多少位的CIDR,都能准确提取出前面的纯IP地址。

内容的提问来源于stack exchange,提问作者Raymond Clayton Rudman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:11:48