[OT] PHP. Uso del preg_*

angeld angeld en froga.net
Jue Sep 2 19:38:18 CLT 2010


On Thu, 2 Sep 2010, zerobatu wrote:

> de antemano perdon por el off topic(si es que es Offtopic)
> lo siguiente por fin estoy trabajando en algo relacionado con informatica
> y para alivianar la pega estoy programando un sitio de monitoreo de toners
> yo me puedo conectar a las impresoras por medio de un navegador y extraer
> la informacion que necesito (porcentaje de toners hojas impresa, etc.) la
> idea es
> que con php lo aga por mi con php ya pude captura el codigo html
> pero ahora no se como localizar el dato que necesito
> ej:
>
> estoy utilizando este funcion
>
> $html=strtolower(implode('',file($url)));
>
> para capturar la pagina
>
> esto es parte del codigo extraido de la pagina:
>
> Identificación
> </div>
> <table class="hpTable">
> <tr >
> <td>
> <span  class="hpPageText" >Núm. serie</span></td>
> <td>
> <span  class="hpPageText" >BRHXJ14974</span></td>
> </tr>
> <tr >
> <td>
>
> lo que necesito sacar en este ejemplo es la serie
>
> si alguien me puede ayudar con esto le agradeceria
> por si acaso buscando encontre este codigo pero no lo entiendo mucho
>
> //esta es la variable que contiene el codigo
> $html
>
> $var=preg_match_all($patron, $html, $cap);
> $patron="";
> echo "$var";

 	En php soy un poco bruto, pero así de primeras te diría:

  - Utilizar el [1]grep de PHP, buscando "hpPageText". Nos devolvería dos 
lineas.

  - A este grep le haría otro, pero con el 'flag' "PREG_GREP_INVERT" 
activado, buscando "Núm. serie", lo que nos devolvería una línea.

  - Esta la puedes dividir en cachos con [2]explode, y seleccionar el que 
más te guste.


 	Ya te he dicho que soy un poco bruto, seguro que hay mejores 
maneras de hacerlo, pero seguro que funciona (tengo cosas parecidas 
funcionando).

 	Saludos --- Angel

  P.D. Ahora que lo pienso, con expresiones regulares y el 'preg_match_all' 
que comentas se puede hacer de una tacada.

  [1]http://es.php.net/manual/es/function.preg-grep.php
  [2]http://es.php.net/manual/es/function.explode.php


Más información sobre la lista de distribución Linux