PHP problem z przetworzeniem i pogrupowaniem tekstu z pliku

0

Witam, mam problem z przetworzeniem tekstu w pliku i pogrupowaniu go na fragmenty pojedyncze.
Chciałbym wiedzieć, gdzie może leżeć problem.

Fragment pliku tekstowego (zachowany oryginalny format, całość ma ok. 750 linii):

 ABC "abc101" ID 1 admin up operational state is up
Pierwszy ID 4413 Drugi ID 3(bbb 1/2.6)

Pierwszy ID 4414 Drugi ID 3(bbb 1/2.6)

Pierwszy ID 13020 Drugi ID 6(bbb 1/4.1)

Pierwszy ID 13022 Drugi ID 6(bbb 1/4.1)

Pierwszy ID 4801 Drugi ID 8(bbb 1/1.5)

Pierwszy ID 4802 Drugi ID 8(bbb 1/1.5)

Pierwszy ID 4809 Drugi ID 8(bbb 1/1.5)

Pierwszy ID 11204 Drugi ID 12 (bbb 1/1.4)

Pierwszy ID 14201 Drugi ID 25 (bbb 3/2.1)

Pierwszy ID 14202 Drugi ID 25 (bbb 3/2.1)

Pierwszy ID 14203 Drugi ID 25 (bbb 3/2.1)

ABC "abc102" ID 2 admin up operational state is up
Pierwszy ID 11915 Drugi ID 19 (bbb 0/0.0)

ABC "abc103" ID 3 admin up operational state is down
ABC "abc104" ID 4 admin up operational state is up
Pierwszy ID 10113 Drugi ID 1(bbb 1/4.4)

Pierwszy ID 10302 Drugi ID 3(bbb 1/2.6)

Pierwszy ID 10307 Drugi ID 3(bbb 1/2.6)

Pierwszy ID 4 Drugi ID 4(bbb 1/1.6)

Pierwszy ID 10404 Drugi ID 4(bbb 1/1.6)

Pierwszy ID 10502 Drugi ID 5(bbb 1/4.3)

Coś co chce uzyskać to:

array{
[key] => [value]
}[/syntax]

gdzie:

array{
[ABC] => [ID(pierwsze)]
}

KOD - >>>>

$handle_test = file("/etc/test_write.txt"); #Odczyt z pliku
if($handle_test){ 
#var_dump($handle_test);
foreach($handle_test as $key => $value)
{
  $reg_string = "/[^0-9\-]*([-]?[0-9]*\.?[0-9]*)[^0-9]*/"; #dla wartości liczbowych
  preg_match($reg_string, $value, $valu);
if (strlen($value) > 1){
  if(strlen($valu[1]) == 3 || (strlen($valu[1]) >= 1 && strlen($valu[1]) < 3) || strlen($valu[1]) > 3){
    if(strlen($valu[1]) == 3){ 
      $array1 = array(); 
         $a = array_push($array1, $valu[1]);
     }
     if((strlen($valu[1]) >= 1 && strlen($valu[1]) < 3) || strlen($valu[1]) > 3){ 
      $array = array();
        $b = array_push($array, $valu[1]);
     }
  $combine = array_combine($array1, $array);
  #echo $c[102];
  print_r($combine);
  }
 }
}

Próbowałem też rozwiązań z while +fopen i fgets oraz z feof i w każdym przypadku dostaje ten sam wynik.

Niestety wskazany kod zwraca mi wynik z przesunięciem i dodatkowymi wartościami w ABC np. 2x 102:
(jeżeli wydrukuje osobno obie tablice to nie ma duplikatów ani przesunięć.)

Array
(
[101] => 
)
Array
(
[101] => 4413
)
Array
(
[101] => 4414
)
Array
(
[101] => 13020
)
Array
(
[101] => 13022
)
Array
(
[101] => 4801
)
Array
(
[101] => 4802
)
Array
(
[101] => 4809
)
Array
(
[101] => 11204
)
Array
(
[101] => 14201
)
Array
(
[101] => 14202
)
Array
(
[101] => 14203
)
Array
(
[102] => 14203
)
Array
(
[102] => 11915
)
Array
(
[103] => 11915
)
Array
(
[104] => 11915
)
Array
(
[104] => 10113
)
0

1.Ponazywaj zmienne sensowniej.
2.Wrzuć konkretniejszy przykład pliku wejściowego oraz wyjściowego, ponieważ ciężko się doczytać, co tak naprawdę próbujesz wyciągnąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1