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

WBOY
풀어 주다: 2016-06-06 20:13:17
원래의
1165명이 탐색했습니다.

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

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

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

谢谢大家帮助!

回复内容:

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

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

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

谢谢大家帮助!

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

<code>$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];</code>
로그인 후 복사

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

用正则吧

<code>$data = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx';
$preg = '/[\d\.]+/i';
preg_match($preg, $data, $matches);
var_dump($matches);</code>
로그인 후 복사

explode函数搞定

<code class="php">$str = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx';
$arr = explode('_', $str);
print_r($arr);</code>
로그인 후 복사

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

<code>explode('_', $str)[2]</code>
로그인 후 복사

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

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿