+ -
当前位置:首页 → 问答吧 → 字符串中获取 IP地址

字符串中获取 IP地址

时间:2011-12-14

来源:互联网

$ipStr = "@#!E#@#$@adfassfsa:192.168.5.212";

$patten = '/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/';

preg_match_all ( $patten, $ipStr, $out );

var_dump ( $out );

我想取出$ipStr字符串中的ip地址 192.168.5.212

思路如下是 写个一个IP地址的正则表达式 然后匹配字符串字符串

可我 现在 正则表达式 写了很多种 var_dump 出来都是 空的
 
下面是我在网上找的 IP正则表达式 试过 都没有用
$patten = '/^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$/';

$patten = '/^((1?\d?\d|(2([0-4]\d|5[0-5])))\.){3}(1?\d?\d|(2([0-4]\d|5[0-5])))$/';

$patten="/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";

$patten = "=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g";

也许会有人说 你分割字符串 不就好了吗 不行 因为 字符串不能确定格式

请大家帮帮忙 谢谢

作者: wenbinglove   发布时间: 2011-12-14

$patten = '/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/';

这样的正则条件都错了 当然你就无法匹配到了。

作者: PhpNewnew   发布时间: 2011-12-14

$patten = '/(\d+)\.(\d+)\.(\d+)\.(\d+)$/';

Array ( [0] => 192.168.5.212 [1] => 192 [2] => 168 [3] => 5 [4] => 212 )

作者: PhpNewnew   发布时间: 2011-12-14

为什么要用限定符"^","$"呢?直接用'/(\d+)\.(\d+)\.(\d+)\.(\d+)/'就可以了

作者: afeiqiang   发布时间: 2011-12-14

楼主试下这个

[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}

作者: shuyunhai   发布时间: 2011-12-14