首页 新闻 搜索 专区 学院

抓取抓取抓取!!!

0
悬赏园豆:5 [已关闭问题] 关闭于 2012-03-29 11:54

假设我ping 162.168.1.247的话,在php里面怎样用正则表达式抓取命令提示符里面的time和TTL这两个数据?(注意:time和TTL这两个数据不止一条)

在线等回复

as、的主页 as、 | 初学一级 | 园豆:96
提问于:2012-03-28 15:58
< >
分享
所有回答(2)
0
\s*time=\d+ms\s*TTL=\d+$
草根程序猿 | 园豆:129 (初学一级) | 2012-03-28 16:06

输出的不止一个time和TTL

支持(0) 反对(0) as、 | 园豆:96 (初学一级) | 2012-03-28 17:32
0

分组就可以了

artwl | 园豆:16526 (专家六级) | 2012-03-28 22:29

没思路  给个提示、

支持(0) 反对(0) as、 | 园豆:96 (初学一级) | 2012-03-29 08:54

@as、: 这是C#版的,你改为PHP吧:

string a = "来自 61.155.169.116 的回复: 字节=32 time=11ms TTL=116"+
"来自 61.155.169.116 的回复: 字节=32 time=15ms TTL=116"+
"来自 61.155.169.116 的回复: 字节=32 time=10ms TTL=116"+
"来自 61.155.169.116 的回复: 字节=32 time=11ms TTL=116";
Regex reg = new Regex(@"\s*time=(?<time>\d+)ms\s*TTL=(?<ttl>\d+)");
var mc = reg.Matches(a);
if (mc.Count>0)
{
for (int i = 0;i<mc.Count;i++)
{
Console.WriteLine(mc[i].Groups["time"].Value + "\t" + mc[i].Groups["ttl"].Value);
}
}
支持(0) 反对(0) artwl | 园豆:16526 (专家六级) | 2012-03-29 09:27

@artwl: 貌似有点问题、你那样的代码不就等于说把那个time个固定死了  每次ping出来的time都是不一样的吧?

支持(0) 反对(0) as、 | 园豆:96 (初学一级) | 2012-03-29 09:56

@as、: 至于怎么取到ping回来的值不是本问题的讨论范围吧,这里只是示例怎么用正则进行提取

支持(0) 反对(0) artwl | 园豆:16526 (专家六级) | 2012-03-29 10:16

@artwl: 现在发现只要两个函数就可以搞定了一个是eregi(),另外一个是explode()这两个就可以搞定,汗!之前怎么就没想到、

支持(0) 反对(0) as、 | 园豆:96 (初学一级) | 2012-03-29 11:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册