-
Notifications
You must be signed in to change notification settings - Fork 0
/
Parse.php
53 lines (44 loc) · 1.58 KB
/
Parse.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
class Regex{
//принимает строку, формирует массив отфильтрованных данных, возвращает его. В случае ошибки возвращает FALSE
public function Parse($str){
$new_str = preg_replace('~\n~', '', $str);
$pattern = '~'
. '(?<DATE>.+?\s\d+?\:\d+?\:\d+?)\s'
. '.*?STATUS\:(?<STATUS>.+?)\]'
. '.*?MAC\:(?<MAC>.+?)\]'
. '.*?SERIAL\:(?<SERIAL>.+?)\]'
. '.*?SOURCE\:(?<SOURCE>.+?)\]'
. '.*?NASID\:(?<NASID>.+?)\]'
. '.*?NASIP\:(?<NASIP>.+?)\]'
. '.*?RET\:(?<RET>.+?)\]'
. '~';
if(preg_match_all($pattern, $new_str, $matches, PREG_SET_ORDER) AND count($matches)!= NULL)
{
return $this->Clear($matches);
}
else return FALSE;
}
//проверка массива (вывод ключ => значение)
public function Check($arr = array()){
foreach ($arr as $key => $value)
{
echo $key .' => '. $value .'</br>';
}
}
//формирование нового - очищенного массива
private function Clear($matches = array(), $r = array()){
foreach ($matches as $i)
{
$r['DATE'] = $i['DATE'];
$r['STATUS'] = $i['STATUS'];
$r['MAC'] = $i['MAC'];
$r['SERIAL'] = $i['SERIAL'];
$r['SOURCE'] = $i['SOURCE'];
$r['NASID'] = $i['NASID'];
$r['NASIP'] = $i['NASIP'];
$r['RET'] = $i['RET'];
}
return $r;
}
}