PHP - Agregar salida a array

 
Vista:

Agregar salida a array

Publicado por Hercross (7 intervenciones) el 23/03/2022 10:44:25
Hola buenos días, me estoy volviendo un poco loco con esto y seguram,ente será sencillo, pero no lo veo...

Tengo un pequeña app que se conecta por medianmte un socket a un dispositivo y recibe una salida, hasta ahí todo bien.

La salida que recibo es esta:

1
2
3
4
5
6
7
8
9
10
Number             Site                          Dyn Exists Real    ACL Port     Description
789398475          EEUU                           D    No    No      A  1234
4958277062         EEUU                           D    No    No      A  1234
252                EEUU                           D    No    No      A  1234
63246              Holand                         D    No    No      A  1234
68768              EEUU                           D    No    No      A  1234
241                EEUU                           D    No    No      A  1234
57474573662        EEUU                           D    No    No      A  1234
646426             EEUU                           D    Yes   Yes     A  1234
8 register

La idea es poder guardar cada dato, cada columna, cada registro, para al final, poder tratarlo como si fuera la consulta de una SQL, poder meterlo en una tabla o lo que haga falta.

No se si me habré explicado bien...

Sería posible?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Agregar salida a array

Publicado por javier (547 intervenciones) el 24/03/2022 20:49:23
Hola,

claro que es posible, en que formato recibes esa respuesta, JSON, CSV?

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agregar salida a array

Publicado por Hercross (7 intervenciones) el 25/03/2022 12:58:27
Hola, muchas gracias por responder...

Si fuera JSON o CSV... sería más sencillo, creo. En este caso es un string, todo junto la vuelta que me da..

Me llega esto:

1
LDP Response: Success Message: Authentication accepted Event: FullyBooted Privilege: system,all Uptime: 3205722 LastReload: 3205722 Status: Fully Booted Event: SuccessfulAuth Privilege: security,all SequenceNumber: 1037 File: ldp.c Line: 1864 Func: ldp_default_msg_cb EventTV: 2022-03-25T12:35:43.952+0100 Severity: Informational Service: LDP EventVersion: 1 AccountID: user SessionID: 0x559c272af500 LocalAddress: IPV4/TCP/0.0.0.0/21 RemoteAddress: IPV4/TCP/127.0.0.1/39596 UsingPassword: 0 SessionTV: 2022-03-25T12:35:43.952+0100 Response: Success Message: Command output follows Output: Number Site Dyn Exists Real ACL Port Description Team Output: 789398475 EEUU D No No A 1234 Output: 4958277062 EEUU D No No A 1234 Output: 252 EEUU D No No A 1234 Output: 63246 Holand D No No A 1234 Output: 68768 EEUU D No No A 1234 Output: 241 EEUU D No No A 1234 Output: 57474573662 EEUU D No No A 1234 Output: 646426 EEUU D Yes Yes A 1234 Output: 8 register Response: Goodbye Message: Thanks for all the fish.

Luego, no se si estará bien hecho, solo me interesa las líneas que comienzan con Output: , por lo que hago:

1
2
3
if(stristr($result, 'Output:')){
  $resultArray = str_replace("Output: ","",$result);
  echo $resultArray;                }

Y la salida es:

1
Number Site Dyn Exists Real ACL Port Description 789398475 EEUU D No No A 1234 4958277062 EEUU D No No A 1234 252 EEUU D No No A 1234 63246 Holand D No No A 1234 68768 EEUU D No No A 1234 241 EEUU D No No A 1234 57474573662 EEUU D No No A 1234 646426 EEUU D Yes Yes A 1234 8 register

Esto es lo que me interesaría poder meter en un JSON, por ejemplo y luego pasarlo a una tabla o lo que necesite.. Pero no se como, o si se puede claro..

Se puede hacer algo?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Agregar salida a array

Publicado por javier (547 intervenciones) el 25/03/2022 19:46:24
Prueba asi:

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
$str = 'LDP Response: Success Message: Authentication accepted Event: FullyBooted Privilege: system,all Uptime: 3205722 LastReload: 3205722 Status: Fully Booted Event: SuccessfulAuth Privilege: security,all SequenceNumber: 1037 File: ldp.c Line: 1864 Func: ldp_default_msg_cb EventTV: 2022-03-25T12:35:43.952+0100 Severity: Informational Service: LDP EventVersion: 1 AccountID: user SessionID: 0x559c272af500 LocalAddress: IPV4/TCP/0.0.0.0/21 RemoteAddress: IPV4/TCP/127.0.0.1/39596 UsingPassword: 0 SessionTV: 2022-03-25T12:35:43.952+0100 Response: Success Message: Command output follows Output: Number Site Dyn Exists Real ACL Port Description Team Output: 789398475 EEUU D No No A 1234 Output: 4958277062 EEUU D No No A 1234 Output: 252 EEUU D No No A 1234 Output: 63246 Holand D No No A 1234 Output: 68768 EEUU D No No A 1234 Output: 241 EEUU D No No A 1234 Output: 57474573662 EEUU D No No A 1234 Output: 646426 EEUU D Yes Yes A 1234 Output: 8 register Response: Goodbye Message: Thanks for all the fish.';
 
        $arrayData = explode('Output:', $str);
 
        // el primer elemento del array son datos de la llamada
        // el segundo elemento del array son los nombres de las columnas
        // el ultimo elemento del array es el mensaje de despedida
 
        echo '<pre>';
        print_r($arrayData);
        echo '</pre>';
 
        //elimino los dos primeros elementos del array
        unset($arrayData[0], $arrayData[1]);
 
        $result = [];
 
        foreach($arrayData as $data){
 
            //si 3es de despedida no quiero los datos
            if(!preg_match_all('/Goodbye Message:/', $data)){
 
                $result[] = explode(' ', trim($data));
 
            }
        }
 
        //aqui estan los datos que te interesan
        echo '<pre>';
        print_r($result);
        echo '</pre>';

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Agregar salida a array

Publicado por Hercross (7 intervenciones) el 28/03/2022 12:19:30
Hola Javier, muchisimas gracias por tu ayuda...

Usando tu código he conseguido que me de un array por cada línea, en donde cada elemento del array es una "columna", pero eso, tengo muchos arrays, tantos como líneas me devulve.

Para pasar esos arrays a uno solo o a un json solo, como lo podría hacer?

Esta es la salida que tengo:

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
Array
(
    [0] => Array
        (
            [0] => Number
            [13] => Site
            [49] => Dyn
            [50] => Exists
            [51] => Real
            [55] => ACL
            [56] => Port
            [67] => Description
        )
 
)
 
Array
(
    [0] => Array
        (
            [0] => 789398475
            [1] => EEUU
            [29] => D
            [31] => No
            [40] => No
            [50] => A
            [52] => 1234
            [94] => Cached
        )
 
)

A si con cada una de las líneas que tengo..

Que podría hacer?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Agregar salida a array

Publicado por javier (547 intervenciones) el 29/03/2022 16:41:48
Hola




1
2
3
$arrayTotal = array_merge($array1, $array2);
 
$json = json_encode($arrayTotal);

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Agregar salida a array

Publicado por javier (547 intervenciones) el 30/03/2022 23:58:45
Pero vamos enseñame el codigo que has usado, por que el que yo te puse te deberia de dar un solo array con todos los demas arrays dentro,
lo que viene a ser un array multidimensional.

Si te está saliendo un array por fila no vamos por buen camino.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar