[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг и запись в массив
simiclips
Есть php скрипт, в нём выполняется команда arp -n | grep 10.0
Выводится:
10.0.129.28              ether   00:17:c4:7f:20:8c   C                     vlan129
10.0.115.2 (incomplete) vlan115
10.0.109.218 ether 00:15:17:5f:ba:23 C vlan109
10.0.129.85 ether 20:54:76:8b:39:0f C vlan129
Нужно это всё записать в массив по отдельности-сначала ip, потом мак, потом вилан. Помогите пожалуйста
Игорь_Vasinsky
результат скрипта в переменную и регуляркой по ней.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
alted
	$data = '	10.0.129.28              ether   00:17:c4:7f:20:8c   C                     vlan129
10.0.115.2 (incomplete) vlan115
10.0.109.218 ether 00:15:17:5f:ba:23 C vlan109
10.0.129.85 ether 20:54:76:8b:39:0f C vlan129'
;

preg_match_all ('/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*(\w{2}:\w{2}:\w{2}:\w{2}:\w{2}:\w{2} | \(.*\)).*(vlan\d{3})/iUs', $data, $match);

foreach ( $match[1] as $i=>$ip ) {
$rez[] = array ('ip' => $ip,
'mac' => $match[2][$i],
'vlan' => $match[3][$i]
);

}

Игорь_Vasinsky
мне кажется тут надо использовать explode - ибо огромный паттерн пугает всех - особбено сервер, даже и рабочий

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
borisz
Цитата (alted @ 28.08.2013 - 18:57)
	$data = '	10.0.129.28              ether   00:17:c4:7f:20:8c   C                     vlan129
  10.0.115.2                      (incomplete)                              vlan115
  10.0.109.218            ether  00:15:17:5f:ba:23  C                    vlan109
  10.0.129.85              ether  20:54:76:8b:39:0f  C                    vlan129'
;

preg_match_all ('/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*(\w{2}:\w{2}:\w{2}:\w{2}:\w{2}:\w{2} | \(.*\)).*(vlan\d{3})/iUs', $data, $match);
   
foreach ( $match[1] as $i=>$ip ) {
  $rez[] = array ('ip' => $ip,
    'mac' => $match[2][$i],
    'vlan' => $match[3][$i]
    );

}

Спасибо
Быстрый ответ:

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