• Domingo 22 de Diciembre de 2024, 23:47

Autor Tema:  Extraer parte de un arreglo  (Leído 1629 veces)

elpollo12

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Extraer parte de un arreglo
« en: Sábado 7 de Noviembre de 2009, 14:04 »
0
Buenas tardes. Saludos, el asunto es que surge un problema ya que tengo el siguiente arreglo que se forma tras hacer un explode.

Código PHP:
$cantidades=explode("IF-MIB::ifDescr.",$var);  
Al mostrarlo con un echo:
Código PHP:
echo $cantidades[2];  
me sale lo siguiente:

2 = STRING: eth0

Pero yo necesito extraer de ahi, solo "2" y "eth0", es decir eliminar el " = STRING: " y quedarme con lo demas, si es posible guardandolo en otro arreglo. No se si hay posibilidades de hacer eso.

Este es el código completo que tengo:

Código PHP:
$com="snmpwalk  -c public -v 1 192.168.100.130 ifdesc ".$ip;
$var=shell_exec($com);
$cantidades=explode("IF-MIB::ifDescr.",$var);
echo $cantidades[1];  
en $var lo que hago es guardar lo que resulta de la ejecución que se hace en $com.

ese comando que le paso en $com si lo ejecuto en la terminal de debian me saca algo como:

IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0

ya con el explode, logre reducir bastante esa cadena, hasta quedarme con "1 = STRING: lo", pero yo solo necesito el "1" y el "lo".. y si es posible guardar eso en un arreglo.

Todo ésto lo hago porque necesito sacar la descripción de una interfaz con snmp (monitoreo de redes) y mostrarla en un archivo php.... y en el caso que planteo el "1" sería la interfaz y "lo", la descripción. Si logro sacar solo eso, entonces lo desearía guardar en un arreglo de manera que me quedara algo como:

Código PHP:
$arreglo[0] // sería el 1
$arreglo[1] // sería el lo  

De antemano, muchas gracias.
cout<<" by elpollo 12 "<<endl;



lair

  • Miembro MUY activo
  • ***
  • Mensajes: 213
  • Nacionalidad: mx
    • Ver Perfil
Re: Extraer parte de un arreglo
« Respuesta #1 en: Lunes 9 de Noviembre de 2009, 18:29 »
0
Hola.

Puedes probar haciendo otro explode, pero ahora buscas "STRING:"
y con eso te quedara $tu_variable[0]='eth0'

suerte.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: Extraer parte de un arreglo
« Respuesta #2 en: Lunes 9 de Noviembre de 2009, 20:15 »
0
Prueba lo siguiente.

Código: PHP
  1.  
  2. <?php
  3. $patron = "/^IF-MIB::ifDescr.(.*?)s=sSTRING:s(.*?)$/im";
  4. $texto = "IF-MIB::ifDescr.1 = STRING: lo
  5. IF-MIB::ifDescr.2 = STRING: eth0";
  6. $devuelve = preg_match_all($patron,$texto,$coincidencias);
  7. echo "<pre>";
  8. print_r($coincidencias);
  9. echo "</pre>"
  10. ?>
  11.  
  12.  

Como verás $coincidencias es un array multidimensional con índice numérico. Donde $coincidencias[1] es a su vez un array que contendrá los números que te interesan, y en $coincidencias[2] los strings que estás buscando.

Lo que uso aquí es una expresión regular (deberías aprender un poco de ellas, son muy útiles para casos como éste). El texto de búsqueda que usé es el que pusiste de ejemplo. preg_match_all devuelve lo que se indica como (.*?) que está en la expresión regular (que básicamente quiere decir "cualquier cosa").

Saludos.