Problema con file_get_contents
Me supongo que para quien conoce bien de PHP esto debe ser muy sencillo.
Estoy intentando extraer el contenido del tag H1 de un sitio, en este caso la Wikipedia, cuando la URL es fija no hay problema:
<?php $html = file_get_contents("http://en.wikipedia.org/wiki/Natalis_Chan");
preg_match_all("|<h1[^>]*>(.+?)|","$html",$salida, PREG_PATTERN_ORDER);
echo $salida[1][0] . " " . $salida[1][1] . "\n";
?>
pero si cambio la URL a una que se redirecciona solo obtengo un Error:
<?php $html = file_get_contents("http://en.wikipedia.org/wiki/Special:Random");
preg_match_all("|<h1[^>]*>(.+?)|","$html",$salida, PREG_PATTERN_ORDER);
echo $salida[1][0] . " " . $salida[1][1] . "\n";
?>
El mensaje de Error:
[function.file-get-contents]: failed to open stream: HTTP request failed!
Me supongo que para abrir y leer una URL de ese tipo debo usar otra función de PHP ... ¿cuál? ¿Cómo?
Gracias!
KingOfSnake
Has mirado con un fopen?
$arch = fopen($url_del_html, "r");
while ($cad=fgets($arch,4096)) {
$todo_el_archivo.=$cad;
}
fclose($arch);
podrías probar algo como esto, a ver si funciona, desconozco si lo hace o no :)
dagi3d
debe ser que file_get_contents no entiende las cabeceras con la redirección y por eso te dice que no encuentra el documento. yo he probado con la clase Zend_Http_Client del framework de Zend y funciona perfectamente:
require_once 'Zend/Http/Client.php';
$client = new Zend_Http_Client('http://en.wikipedia.org/wiki/Special:Random');
$response = $client->request();
$html = $response->getBody();
?>