84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
在PHP中,一个字符串比如“xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx”,怎么得到其中的“10.136.132.61”这一部分呢。
因为IP地址长短不一,所以我一开始想的substr是不适用的。如果寻找“_”的位置的话,因为IP前后都有两个“_”,所以也不行。
除了IP地址长度不确定,其他的长度是确定的,格式也是确定的,都是“xxx_xxxx_IP地址_xxxxxxxx_xxxxxx”这个格式,x表示一个字符
谢谢大家帮助!
学习是最好的投资!
如果你能确定其他字符串没有类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];
不懂php,不过这个问题可以回答下,一,正则匹配。二,字符串切割,切个头切个尾。
用正则吧
$data = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx'; $preg = '/[\d\.]+/i'; preg_match($preg, $data, $matches); var_dump($matches);
explode函数搞定
$str = 'xxx_xxxx_10.136.132.61_xxxxxxxx_xxxxxx'; $arr = explode('_', $str); print_r($arr);
我自问自答一下,可以用substr($str,9,-16)
explode('_', $str)[2]
用正则可以非常灵活,而用explode,或者substr,都是投机取巧。3L是正解
支持explode,简单省事,反正格式已固定
如果你能确定其他字符串没有类IP的格式的话才可以匹配
不懂php,不过这个问题可以回答下,一,正则匹配。二,字符串切割,切个头切个尾。
用正则吧
explode函数搞定
我自问自答一下,可以用substr($str,9,-16)
用正则可以非常灵活,而用explode,或者substr,都是投机取巧。3L是正解
支持explode,简单省事,反正格式已固定