Cargar contenido externo de una url o pagina con php

Hace poco se me presentó la necesidad de tener que cargar contenido externo en una pagina web. El caso era mostrar ciertos posts del blog de una empresa en la página corporativa de la misma. Una de las posibilidades es intentarlo con jQuery o algún otro framework javascript pero nos encontramos con limitaciones a la hora de hacer cargas de contenidos de dominios externos.

Al final, documentandome un poco por la red encontré las funciones cURL de php que me han salvado el problema en cuestión de minutos y de una manera muy sencilla. En poco rato conseguí cargar contenido externo a través de una url con php de una manera sencilla y efectiva.

Por una parte, preparé un archivo en el servidor donde se aloja el wordpress para que mostrase sólo el contenido que necesitaba así tener preparado el contenido a cargar.

Para cargar contenidos externos en nuestra web podemos hacer uso de esta función que aprovecha la potencia de las librerias cURL de php para realizar la descarga de html de una url. La función es ésta :

function get_data($url)
{
 $ch = curl_init();
 $timeout = 5;
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
 $data = curl_exec($ch);
 curl_close($ch);
 return $data;
}

Ésta función en php se encarga de descargar el html de la url que le indicamos con lo cual, haciendo uso de un par de lineas de php adicionales conseguiremos mostrar el contenido descargado :

$contenido_externo = get_data('http://www.dominio.com/file.html'); print_r($contenido_externo);
Además de mostrarlo directamente, se puede procesar la respuesta recibida para adaptarla a nuestras necesidades haciendo uso de "replaces", recorriendo los nodos del contenido como si fuera un xml, etc.. las posibilidades son muchas a partir de aqui.

13 comentarios:

  1. y que tipo de contenido puedo cargar...? un rss o cosas asi...?

    Páginas Web

    ResponderEliminar
    Respuestas
    1. Hola, no exactamente. En este caso, se trata de funciones que leen el html que devuelve la url. Con el luego puedes hacer lo que quieras. En cambio para leer un rss existen maneras mucho mas sencillas. En mi blog encontrarás un post hablando de ese tipo de lecturas de xml. (http://programacionydisenoweb.blogspot.com.es/2011/11/leer-feed-rss-o-archivo-xml-con-php.html) Un saludo.

      Eliminar
  2. como puedo mostrarlo pero en el directorio que le indique para que muestre las imagenes etc. es local lo que tengo pero siempre me lo enseña en el home y quiero que sea en otro directorio desde donde lo he leido, gracias

    ResponderEliminar
    Respuestas
    1. Hola, no entiendo muy bien cual es el problema que planteas. La función la puedes llamar desde donde quieras. Y si las rutas relativas no te coinciden desde donde lo cargas, siempre puedes hacer un replace o algo parecido para adaptarlas todas a la vez.. por ejemplo.. Un saludo.

      Eliminar
  3. me da un error porque la pagina que carga llama a un css y la direccion empieza desde la direccion de mi php
    :S
    hace esto, pero la carpeta
    carpetaDelPHP/css/estilo.css
    y deberia abrir
    carpetaDelHTML/css/estilo.css

    ResponderEliminar
    Respuestas
    1. Hola, eso puede deberse a que las rutas son relativas en el html que descargas.. podrias intentar arreglarlo haciendo algun tipo de "replace" de las rutas o bien descargando tambien ese contenido. Un saludo.

      Eliminar
  4. Esta es la manera mas sencilla de hacerlo..

    ResponderEliminar
  5. existe alguna posibilidad de cargar solo los títulos de esa pagina html externa???

    ResponderEliminar
    Respuestas
    1. Hola, tal y como digo en el post "Además de mostrarlo directamente, se puede procesar la respuesta recibida para adaptarla a nuestras necesidades haciendo uso de "replaces", recorriendo los nodos del contenido como si fuera un xml, etc.. las posibilidades son muchas a partir de aqui"

      Por tanto, una vez obtienes la respuesta, procesala y extrae solo lo que te interesa.

      Un saludo

      Eliminar
  6. Hola actibands. Te comento mi duda a ver si me puedes orientar, ya que vengo averiguando por Internet y estoy cada vez más desorientado ya que soy novato. Lo que yo necesito es agregar una web en a través de un formulario y que con código PHP se posiciones dentro de una página externa y copie links, estos links son para descarga archivos, y me los guarde en un Bloc de notas. La primera página ya la tengo hecha, ya que es un formulario muy simple en HTML con un input text y un input submit, y tengo que armar otra página que me tome el valor o la página ingresada en el formulario y recorra esa página con PHP, el tema es que no encuentro material al respecto en Internet. Si me puedes orientar te lo agradecería.

    ResponderEliminar
    Respuestas
    1. Hola, la respuesta era un poco larga para ponertela aqui asi que he creado un nuevo post. Lo puedes ver aqui Extraer enlaces de un html con php. Espero que te sea de mucha ayuda. Un saludo.

      Eliminar