Como la mayoría de los “host” bloquean el uso de “ File_get_contents ” por motivos de seguridad, es necesario suplir su uso por otra función, “cURL”, en este caso, que nos va a permitir extraer el contenido de cierta web externa y utilizarlo en la nuestra propia a voluntad…
Mientras que “ File_get_contents ” es tan fácil de usar como:
cURL” es bastante más compleja de usar, dando muchos problemas que hay que anticipar para poder usarla a pleno rendimiento y sin errores que trastoquen nuestro trabajo, por no mencionar nuestro tiempo editando nuestra web.
File_get_contents _curl
Con esta función quedan solventados muchos de esos problemas, aunque cada servidor es un mundo…
Para su uso, después de añadir la función en nuestro “php”, solo hay que sustituir la referencia a “ file_get_contents ” por “file_get_contents_curl”; teniendo el cuidado de añadir “[0]” a la variable que recoge el resultado, porque en este caso es un “array” de dos dimensiones:
En la segunda dimensión se encuentran los encabezados devueltos por la página solicitada…
/*================================== Esta función recoge el contenido de la web pasada en "$url" y los encabezados devueltos por ella... @return array[0] Contenido de la página deseada... array[1] Array con las cabeceras devueltas... ==================================*/ function file_get_contents_curl( $url, $javascript_loop = 0, $timeout = 5 ) { $url = str_replace( "&", "&", urldecode(trim($url)) ); $cookie = tempnam ("/tmp", "CURLCOOKIE"); $ch = curl_init(); curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_ENCODING, "" ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # necesario para https... curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); $content = curl_exec( $ch ); $response = curl_getinfo( $ch ); curl_close ( $ch ); if ($response['http_code'] == 301 || $response['http_code'] == 302) { ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); if ( $headers = get_headers($response['url']) ) { foreach( $headers as $value ) { if ( substr( strtolower($value), 0, 9 ) == "location:" ) return file_get_contents_curl( trim( substr( $value, 9, strlen($value) ) ) ); } } } if ( ( preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) && $javascript_loop < 5 ) { return file_get_contents_curl( $value[1], $javascript_loop+1 ); } else { return array( $content, $response ); } }
P.D.: Si este artículo te ha sido de utilidad, por favor, considera tomar un minuto y pulsar en alguno de los enlaces de publicidad. El objetivo es pagar el hosting año a año, nada más, y nada menos…
Gracias.