2011-01-11 25 views
6

Quiero analizar información de una página html. Actualmente que resuelve el problema como este:Función equivalente para file_get_contents()?

header("Content-type: text/plain");  
$this->pageSource = file_get_contents ($this->page); 
header("Content-type: text/html"); 

$this->page es la URL de la página web. Esto funciona bien en XAMPP, pero cuando subo mi guión en mi servidor web, me sale el siguiente mensaje de error:

Advertencia: file_get_contents() [function.file-get-contents]: http: // envoltorio está deshabilitado en la configuración del servidor por allow_url_fopen = 0

Así que, obviamente, no estoy autorizado a ejecutar esa función en mi servidor web.

¿Existe una función equivalente para resolver mi problema?

+3

¿Has probado el curl? –

+0

Puede usar la función, pero no con las URL, solo con archivos locales, eso es lo que le dice el mensaje de error. – Tobias

+1

'file_get_contents()' podría usarse para abrir URL, pero no podría manejar tiempos de espera o trabajar detrás de un proxy. –

Respuesta

19

En realidad la función file_get_contents no se desactiva,
pero allow_url_fopen se desactiva

se puede reemplazar con curl

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $this->page); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$this->pageSource = curl_exec($ch); 
curl_close($ch); 

Sin embargo, si el bloque servidor de tráfico de salida, curl no ayuda demasiado

+0

¿Podría usar CUrl para obtener el contenido y luego manipularlo usando Simple Html Dom Parser? – Silentbang

+0

sí, úsela junto con la función 'simplexml_load_string' – ajreal

2

cURL es la solución estándar habitual.

0

Use curl y ¿por qué necesita cambiar el encabezado a texto sin formato para recuperar datos? Esto no es necesario si está recuperando datos.

0

si tiene rizo, úselo es excelente para esto.


      $urlx = 'http://yoururl'; 

      $data="from=$from&to=$to&body=".urlencode($body)."&url=$url"; 
//set post parameters 
      $process = curl_init($urlx); 
//init curl connection 
      curl_setopt($process, CURLOPT_HEADER, 0); 

      curl_setopt($process, CURLOPT_POSTFIELDS, $data); 

      curl_setopt($process, CURLOPT_POST, 1); 

      curl_setopt($process, CURLOPT_RETURNTRANSFER,1); 

      curl_setopt($process,CURLOPT_CONNECTTIMEOUT,1); 

      $resp = curl_exec($process); 
//your content 
      curl_close($process); 

 
Cuestiones relacionadas