« »
Jan 31

cURL es una utilidad de linea de comandos (curl) y una librería (libcurl) para realizar transferencias de archivos que soporta multitud de protocolos distintos (FTP, HTTP, etc.) y un sinfín de opciones. Tanto la utilidad como la librería son muy conocidas y de un uso muy extendido.

La librería se puede usar desde varios lenguajes de programación y entre ellos, como no, el PHP. Puedes encontrar en el manual todo un capítulo dedicado al conjunto de funciones cURL. De entre la infinidad de cosas que puedes hacer usando esta librería con PHP: obtener el contenido de una web, obtener datos XML (como RSS), subir o bajar archivos de servidores FTP, soporte para conexiones seguras (HTTPS, SCP), etc. Una opción destacable es el soporte de peticiones HTTP POST y GET con lo que podéis realizar scraping de casi cualquier cosa.

Un ejemplo de código para obtener el contenido de una página web (o un feed):

[php] $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://www.phpbsd.net/’);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$resultado = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch); [/php]

Con el código anterior en $resultado nos quedamos con los datos obtenidos o nada si ha ocurrido un error, si ese es el caso en $error tenemos un mensaje de texto con el error. Se usan las siguientes opciones:

  • CURLOPT_URL con la URL a descargar.
  • CURLOPT_HEADER a false para no incluir las headers HTTP en la respuesta.
  • CURLOPT_RETURNTRANSFER a true para que la función curl_exec() devuelva la respuesta como un string en lugar de printarla por pantalla.

Para más opciones consultar la documentación de la función curl_setopt().

De todas las funcionalidades que proporciona el soporte de cURL en PHP una de las más llamativas son todas las funciones multi_* para realizar peticiones en paralelo, esto puede llegar a ser muy útil en numerosas situaciones. En un siguiente post explicaré como lanzar peticiones paralelas desde PHP usando cURL.

Be Sociable, Share!
Tagged with:

6 Responses to “Transfiriendo datos con la librería cURL en PHP”

  1. […] En $archivo tenemos el contenido del archivo XML, por ejemplo la respuesta de una petición cURL, y en $resultado obtendremos el XML formateado. También disponemos de la alternativa a formatString() q es: […]

  2. […] Dado que ya he hecho un post acerca de como realizar peticiones cURL y otro relacionado con el formateo de XML, sólo me falta lo evidente, un post acerca de como leer y trabajar con los datos XML recibidos. Desde que tenemos la versión 5 del PHP disponemos de la extensión SimpleXML la cual nos proporciona una forma muy rápida y fácil de leer datos XML. Si has programado parsers XML usando librerías como expat encontrarás que esta extensión es una auténtica maravilla, aunque como siempre, a costa de consumir más recursos (básicamente más memoria… pero lo vale). […]

  3. Mar says:

    Hola, tengo un problema con un rss que he montado en mi página, por exigncias del servidor tengo que usar la libreria curl para leer un xml externo (esto funciona en otros servidores con un código php bastante sencillo:

    //—————————————————————-//
    $filename = “http://www.abc.es/rss/feeds/abc_ultima.xml”;
    header(“Content-type:text/xml”);
    readfile ($filename); y se llama desde ajax)

    //—————————————————————-//

    por seguridad según me han contado esto no funciona y he intentado hacerlo con la libreria indicada, el código que he usado es:

    //—————————————————————-//
    // Se crea un manejador CURL
    $ch = curl_init();

    // Se establece la URL y algunas opciones
    curl_setopt($ch, CURLOPT_URL, $filename);
    curl_setopt($ch, CURLOPT_HEADER, false);

    // Se obtiene la URL indicada
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);

    // Se cierra el recurso CURL y se liberan los recursos del sistema
    //curl_close($ch);
    //—————————————————————-//

    tal y como indicas en este artículo, consigo que lea el xml externo pero no lo carga el código ajax y no se que hacer, no se donde está el error, la verdad es que es la primera vez que uso esta librería.

    Muchas gracias

  4. Mar says:

  5. Muy buen codigo para quien empiece a trabajar con curl, yo soy uno de ellos ya que los codigs que he bajado para importar en mi web los contactos del msn de los usuarios para propagar mi web no me han servido y estoy partiendome la cabez con curl desde el principio… Todo lo estoy utilizando en mi web http://www.yoggisms.com.

    Saludos

  6. Abraham says:

    pues es interesante lo que planteas con curls yo tmb kiero utilizar eso en mi web http://www.otramusica.com

Leave a Reply

preload preload preload