SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: jodijo5 en Jueves 1 de Abril de 2010, 20:35

Título: leer html desde php
Publicado por: jodijo5 en Jueves 1 de Abril de 2010, 20:35
Hola amigos, tengo un problema, necesito hacer un programa que obtenga el contenido html de una pagina y luego extraiga solo el contenido de una etiqueta, necesitaria hacerlo full php sin javascript ni esas cosas proque lo voy a poner como un cronjob, hasta ahpora hice lo siguente:
Código: PHP
  1.  
  2. <?php
  3. $la_pagina='http://localhost/prueba1/uno.html';
  4. $opts = array('http' =>array(
  5.                 'method'  => 'GET',
  6.                 'header'  => 'Content-type: application/x-www-form-urlencoded',
  7.                 //'content' => $postdata
  8. ));
  9.  
  10. $context  = stream_context_create($opts);
  11.  
  12. $res= file_get_contents($la_pagina, false, $context);
  13. //el contenido HTML de la pagina se guarda en la variable $res,
  14. //y desde ahi tengo que extraer el contenido de la etiqueta <div id="cuerpo">
  15. ?>
  16.  
  17.  
mi problema está en que no se como extraer la info de esa etiqueta :-( porfavor ayudenme :-)

Gracias de antemano por su colaboracion
Título: Re: leer html desde php
Publicado por: DriverOp en Viernes 2 de Abril de 2010, 01:29
Esto debería funcionar:
Código: PHP
  1. <?php
  2. $texto = "<div id="cuerpo">Esto es el texto</div>";
  3.  
  4. $patron = "/<div id="cuerpo">(.*?)</div>/is";
  5. $devuelve = preg_match($patron,$texto,$coincidencias);
  6. echo "<br>Devuelve<pre>";
  7. var_dump($devuelve);
  8. var_dump($coincidencias);
  9. echo "</pre>";
  10. ?>
  11.  
Título: Re: leer html desde php
Publicado por: jodijo5 en Viernes 2 de Abril de 2010, 04:12
creme mi amigo que ya habia pensado en eso pero el problema ahi es que pueden haber otras etiquetas dentro, y no capturaria todo el texto correspondiente, eso lo pude hacer con javascript pero el hecho es que solo debe ser php, eh ahi mi problema, muchas gracias de todas formas :) :good:
Título: Re: leer html desde php
Publicado por: jodijo5 en Viernes 2 de Abril de 2010, 18:41
Hola amigos, me parece que ya lo resolví, me hacen falta algunas mejoras, como validaciones, la codificacion y esas cosas, pero lo mas importante ya está :D, aqui os dejo el código:
Código: PHP
  1.  
  2. <?php
  3. $direccion=$_GET["opc"];
  4. $identificador='history';
  5. $tipoid='class';
  6. $etiqueta='div';
  7. $opts = array('http' =>array(
  8.                 'method'  => 'GET',
  9.                 'header'  => 'Content-type: application/x-www-form-urlencoded',
  10. ));
  11.  
  12. $context  = stream_context_create($opts);
  13.  
  14. $res= file_get_contents($direccion, false, $context);
  15. $rpt=$res;
  16. $rpt=preg_replace('/.*<'.$etiqueta.'* '.$tipoid.'="'.$identificador.'">/','<'.$etiqueta.' '.$tipoid.'="'.$identificador.'">',$rpt);
  17. $cierres=substr_count($rpt,'</'.$etiqueta.'');
  18. for($i=0;$i<$cierres;$i++) {
  19.     $mpos1=strripos($rpt,'</'.$etiqueta.'>');
  20.     $rpt=substr($rpt,0,$mpos1);
  21. }
  22. echo $rpt;
  23. ?>
  24.  
  25.