[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг строк
borisz
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms

Нужно парсить этот текст, вывести 0.045

можно эту строку:
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
а можно и эту:
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms
HErATuB

$var="PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms"
;

$chars = preg_split('/\n/', $var, -1);
$result = array();
foreach($chars as $k => $v)
if(preg_match('/((rtt[\sa-z0-9\/]*=[\s0-9\.\/]*ms)|([0-9]\sbytes\sfrom\s[a-z0-9_=:\.\s]*ms))/i',$v,$m))
$result[$k]=$m[0];
print_r($result);
Guest
Цитата (HErATuB @ 7.08.2013 - 09:46)

$var="PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms"
;

$chars = preg_split('/\n/', $var, -1);
$result = array();
foreach($chars as $k => $v)
if(preg_match('/((rtt[\sa-z0-9\/]*=[\s0-9\.\/]*ms)|([0-9]\sbytes\sfrom\s[a-z0-9_=:\.\s]*ms))/i',$v,$m))
$result[$k]=$m[0];
print_r($result);

Вы немного неправильно поняли, нужно из какой-нибудь из этих 2х строк вывести только 0.045

rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms
HErATuB
No problem!

$var="PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms"
;
$chars = preg_split('/\n/', $var, -1);
$result = array();
foreach($chars as $k => $v)
if(preg_match('/time=([0-9\.]*)/i',$v,$m))
$result[$k]=$m[1];
print_r($result);
Guest
Цитата (HErATuB @ 7.08.2013 - 11:54)
No problem!

$var="PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.045 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms"
;
$chars = preg_split('/\n/', $var, -1);
$result = array();
foreach($chars as $k => $v)
if(preg_match('/time=([0-9\.]*)/i',$v,$m))
$result[$k]=$m[1];
print_r($result);

Спасибо, посоветуйте пожалуйста литературу по парсингу.
HErATuB
Это просто регулярное выражение
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.