| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > разбор строки |
| Автор: alligator 14.7.2006, 18:11 |
| есть текст PING ya.ru (213.180.204.8) 56(84) bytes of data. 64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=59 time=1.16 ms --- ya.ru ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.166/1.166/1.166/0.000 ms из него нужно получить 1.166 делаю так preg_match("/mdev\s+\W+([\d*\.\d*]+)/im",$output,$res); результатом получаеться Array ( [0] => mdev = 1.166 [1] => 1.166 ) подскажите как сделать чтобы результатом был только один элемент массива.... ? |
| Автор: ZlojEzh 14.7.2006, 19:42 |
| насколько я знаю - никак нулевым элементом всегда идет полное совпадение шаблона но я не могу представить себе ситуацию, когда это создает проблемы... какая разница, что писать: $output или $output[1]?.. в крайнем случае появится одна лишняя строчка и одна временная переменная |
| Автор: vasac 14.7.2006, 19:54 | ||
А вообще:
|
| Автор: alligator 14.7.2006, 19:59 | ||
спасибо |
| Автор: MPx 27.7.2006, 01:50 | ||
Вставляй перед условием ?:, тогда идти в массив не будет.
в массив пойдёт только условие (.+?) |
| Автор: AztEK 27.7.2006, 08:09 | ||
Привязались вы к эти регуляркам... Мне вот нравится ф-ция sscanf()
|
| Автор: GiV 27.7.2006, 11:56 |
А по скорости? =) |
| Автор: AztEK 27.7.2006, 12:13 |
| Думаю, регулярка проиграет |
| Автор: GiV 27.7.2006, 12:27 |
| А если строка сменится на 4 packets transmitted, 0 received, 100% packet loss, time 0ms Шаблон сканирования сработает? =) |
| Автор: AztEK 27.7.2006, 18:00 |
| Нет. А регулярка? =) |
| Автор: GiV 27.7.2006, 19:27 |
| 100% сработает =] |
| Автор: AztEK 28.7.2006, 07:01 |
| Оу... До меня дошло. Да, в этом случае регулярки, возможно предпочтительнее |