Tema: Leer archivos (fuera de mi servidor)
Pregunta: Necesito leer archivos fuera de mi servidor, por ejemplo un rss, o una salida de un webservice o simplemente de una página cualquiera.
Respuesta: Si, podés usar file_get_contents, pero es mejor curl pero éste debe estar
instalado en el server. Por si no sabemos que tenemos disponible en nuestro servidor podés usar la siguiente función:
Código PHP:
function getFile($archivo){
if(ini_get('allow_url_fopen')){
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 240
)
)
);
$content= file_get_contents($archivo, 0, $ctx);
}else{
$ch = curl_init ($archivo) ;
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
$content= curl_exec ($ch) ;
curl_close ($ch) ;
}
return $content;
}
//PHP 4.2.x < solo es necesario si se tiene esta versión de php
if (!function_exists('file_get_contents')) {
function file_get_contents($filename, $incpath = false, $resource_context = null)
{
if (false === $fh = fopen($filename, 'rb', $incpath)) {
trigger_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
return false;
}
clearstatcache();
if ($fsize = @filesize($filename)) {
$data = fread($fh, $fsize);
} else {
$data = '';
while (!feof($fh)) {
$data .= fread($fh, 8192);
}
}
fclose($fh);
return $data;
}
}
Y acá te dejo un ejemplo:
Código PHP:
echo getFile('http://www.forosdelweb.com/f18/faqs-php-530600/index7.html');