Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Извлечь процент потерь из отчета ping
 
 автор: denvor   (18.09.2009 в 00:44)   письмо автору
 
 

Имеется текст пинга:
PING site.ru (177.213.33.112) 56(84) bytes of data. 64 bytes from collocation.trans-net.su (177.213.33.112): icmp_seq=1 ttl=64 time=0.017 ms 64 bytes from collocation.trans-net.su (177.213.33.112): icmp_seq=2 ttl=64 time=0.029 ms 64 bytes from collocation.trans-net.su (177.213.33.112): icmp_seq=3 ttl=64 time=0.028 ms --- site.ru ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.017/0.024/0.029/0.007 ms rtt min/avg/max/mdev = 0.017/0.024/0.029/0.007 ms

из которого нужно вытащить процент потерь и среднее время. Как это сделать проще всего?

  Ответить  
 
 автор: cheops   (18.09.2009 в 08:18)   письмо автору
 
   для: denvor   (18.09.2009 в 00:44)
 

Можно поступить следующим образом
<?php  
  $text 
'PING site.ru (177.213.33.112) 56(84) bytes of data.
           64 bytes from collocation.trans-net.su (177.213.33.112):
           icmp_seq=1 ttl=64 time=0.017 ms 64 bytes
           from collocation.trans-net.su (177.213.33.112): icmp_seq=2
           ttl=64 time=0.029 ms 64 bytes from collocation.trans-net.su
           (177.213.33.112): icmp_seq=3 ttl=64 time=0.028 ms --- site.ru
           ping statistics --- 3 packets transmitted, 3 received, 0% 
           packet loss, time 1999ms rtt min/avg/max/mdev = 
           0.017/0.024/0.029/0.007 ms rtt min/avg/max/mdev = 
           0.017/0.024/0.029/0.007 ms'
;  
  
$pattern '|[\d]+%|is';  
  
preg_match($pattern$text$out);
  echo 
$out[0];
?>

  Ответить  
 
 автор: denvor   (18.09.2009 в 22:28)   письмо автору
 
   для: cheops   (18.09.2009 в 08:18)
 

Просто и изящно :)

Большое спасибо!

По второму вопросу я составил вот такое - '|(mdev = [0-9\.]{1,7}[\/])([0-9\.]{1,7})|si', сейчас проверю
А модификатор s что делает?

  Ответить  
 
 автор: cheops   (18.09.2009 в 23:09)   письмо автору
 
   для: denvor   (18.09.2009 в 22:28)
 

>А модификатор s что делает?
В принципе он здесь не нужен - он позволяет распространить регулярное выражение на несколько строк (по умолчанию соответствие ищется на каждой отдельной строке).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования