Foros del Web » Programando para Internet » PHP »

obtener datos con curl

Estas en el tema de obtener datos con curl en el foro de PHP en Foros del Web. Hola a todos, Necesito obtener lo que me devuelve curl para poder obtener un valor que necesito ya que ese valor es variable y en ...
  #1 (permalink)  
Antiguo 06/11/2017, 21:18
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 7 meses
Puntos: 9
obtener datos con curl

Hola a todos,

Necesito obtener lo que me devuelve curl para poder obtener un valor que necesito ya que ese valor es variable y en estos momentos lo agrego manual.

para explicar mejor es que yo descargo un pdf sin problemas, el problema esta en que para descargar ese pdf yo hago dos ejecuciones con curl, la primera es para generar el archivo pdf y el segundo para descargar el archivo, y lo hago porque en la primera ejecucion con curl al momento de terminar su ejecución me muestra contenido html que es un link y texto esa es la informacion que quiero obtener he probado con cualquier configuración que he encontrado en google sin resultados.

Esto es lo que tengo que genera un pdf y devuelve contenido html que se me visualiza en la pagina:

Código PHP:
Ver original
  1. $po = $_POST["sel_po"];
  2.                        
  3. $url = "http://mipagina.com/pdf2.php?c=18&b=$po&t=180&d1=$fi&d2=$ff";
  4.                        
  5. $handler = curl_init();
  6. curl_setopt($handler, CURLOPT_HEADER, true);
  7. curl_setopt ($handler, CURLOPT_POST, 1);
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($handler, CURLOPT_URL, $url);
  10. $o2 = curl_exec ($handler);                
  11. curl_close($handler);
  12. echo "<br>---<br>";
  13. $o2 = nl2br($o2);                      
  14. echo $o2;

cuando ejecuto lo anterior me muestra codigo html en la pagina y ese html es lo que quiero pasar a una variable.

Código HTML:
Ver original
  1. <a href="http://www.mipagina.com/file.php?porc=20171107_07_.pdf" target="_blank">Descargar Archivo</a><p>
  2. <br>...mas html...<br>

Debo mencionar que yo solo estoy accediendo a un sistema que ya esta hecho y esta mal por eso estoy haciendo un sistema paralelo con información accediendo con curl.

Bueno ese es mi problema

Última edición por __SDP__; 06/11/2017 a las 21:25
  #2 (permalink)  
Antiguo 07/11/2017, 06:23
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: obtener datos con curl

Desde ya, si el sistema es tuyo te pertenece a ti y/o tu compañia-empresa que lo arreglen, en cuanto a tu problema puedes axtraer los valores de enlace (href) de un string html de esta forma:

Código PHP:
Ver original
  1. $html = "html code";
  2.  
  3. $dom = new DOMDocument;
  4. @$dom->loadHTML($html);
  5. $links = $dom->getElementsByTagName('a');

Entonces, guardas el out de tu curl, en variable aplicas lo anterior, y ahi no se que más quieres hacer, en resumidas cuentas:

Código PHP:
Ver original
  1. $po = $_POST["sel_po"];
  2. $url = "http://mipagina.com/pdf2.php?c=18&b=$po&t=180&d1=$fi&d2=$ff";
  3.  
  4. $handler = curl_init();
  5. curl_setopt($handler, CURLOPT_HEADER, true);
  6. curl_setopt ($handler, CURLOPT_POST, 1);
  7. curl_setopt($handler, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($handler, CURLOPT_URL, $url);
  9. $out = curl_exec ($handler);                
  10. curl_close($handler);
  11.  
  12. $dom = new DOMDocument;
  13. @$dom->loadHTML($out);
  14. $links = $dom->getElementsByTagName("a");
  15.  
  16. $pdf = $links[0]->getAttribute("href"); //this must be your pdf...

2 cosas:
Uno en la linea 8 de tu código tenias metido una var $ch, la cambie por el $handler
Dos: no se para que usas la opcion post si no la estas usando, estás tirando todo por get, pero bue... lo dejo ya que es tu programita y no mio

Espero que eso te sirva

Última edición por alvaro_trewhela; 07/11/2017 a las 12:41

Etiquetas: curl, html, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:33.