search

Home  >  Q&A  >  body text

string - 如何在php中截取字符串“xxx_xxxx_IP地址_xxxxxxxx_xxxxxx”中的IP地址呢?

在PHP中,一个字符串比如“xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx”,怎么得到其中的“10.136.132.61”这一部分呢。

因为IP地址长短不一,所以我一开始想的substr是不适用的。如果寻找“_”的位置的话,因为IP前后都有两个“_”,所以也不行。

除了IP地址长度不确定,其他的长度是确定的,格式也是确定的,都是“xxx_xxxx_IP地址_xxxxxxxx_xxxxxx”这个格式,x表示一个字符

谢谢大家帮助!

PHPzPHPz2902 days ago476

reply all(9)I'll reply

  • 黄舟

    黄舟2017-04-10 17:10:35

    如果你能确定其他字符串没有类IP的格式的话才可以匹配

    $str = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx';
    $patten = '(/25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}/';
    preg_match($patten,$str,$result);
    var_dump($result);
    $ip = $result[0];

    reply
    0
  • PHPz

    PHPz2017-04-10 17:10:35

    不懂php,不过这个问题可以回答下,一,正则匹配。二,字符串切割,切个头切个尾。

    reply
    0
  • PHPz

    PHPz2017-04-10 17:10:35

    用正则吧

    $data = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx';
    $preg = '/[\d\.]+/i';
    preg_match($preg, $data, $matches);
    var_dump($matches);

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 17:10:35

    explode函数搞定

    reply
    0
  • 黄舟

    黄舟2017-04-10 17:10:35

    $str = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx';
    $arr = explode('_', $str);
    print_r($arr);

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 17:10:35

    我自问自答一下,可以用substr($str,9,-16)

    reply
    0
  • 阿神

    阿神2017-04-10 17:10:35

    explode('_', $str)[2]

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 17:10:35

    用正则可以非常灵活,而用explode,或者substr,都是投机取巧。3L是正解

    reply
    0
  • 黄舟

    黄舟2017-04-10 17:10:35

    支持explode,简单省事,反正格式已固定

    reply
    0
  • Cancelreply