【发布时间】:2016-06-05 10:36:51
【问题描述】:
我尝试从给定的示例输入中仅提取 IP 地址,但它会提取一些文本。这是我的代码:
$spfreccord="v=spf1 include:amazonses.com include:nl2go.com include:smtproutes.com include:smtpout.com ip4:46.163.100.196 ip4:46.163.100.194 ip4:85.13.135.76 ~all";
$regexIpAddress = '/ip[4|6]:([\.\/0-9a-z\:]*)/';
preg_match($regexIpAddress, $spfreccord, $ip_match);
var_dump($ip_match);
我希望只匹配表格每一列中的 IPv4 IP 地址xxx.xxx.xxx.xxx,但看起来$regexIpAddress 不正确。
您能帮我找到正确的正则表达式来仅提取 IPv4 IP 地址吗?谢谢。
【问题讨论】:
-
试过
/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/? -
是的,它工作得很好,但一个小问题是我无法提取 cidr 类 v=spf1 ip4:205.201.128.0/20 ip4:198.2.128.0/18 吗?是否可以提取 cidr 205.201.128.0/20
-
然后改成:
/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:\/\d{2})?/ -
嗨@Will 你的回答工作正常,但我不需要用ips 提取文本“ip4”,嗨@Thamilan 你的回答对我很好,但一个问题是我不能像这样提取类 cidr
198.2.128.0/18所以请如果有什么要添加到我的 ipregex 来提取像这样的 cidr 示例198.2.128.0/18谢谢大家 -
@sala.eddi 我的不提取文本,只提取 IP。查看我的示例中的输出。