2011-01-11 20 views
6

Voglio analizzare alcune informazioni da una pagina HTML. Attualmente mi risolve il problema come questo:Funzione equivalente per file_get_contents()?

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

$this->page è l'URL del sito web. Questo funziona bene su XAMPP, ma quando ho caricato il mio script sul mio webserver, ottengo il seguente messaggio di errore:

Warning: file_get_contents() [function.file-get-contents]: http: // involucro è disabilitato nella configurazione del server da allow_url_fopen = 0

Quindi ovviamente non sono autorizzato a eseguire tale funzione sul mio server web.

Quindi esiste una funzione equivalente per risolvere il mio problema?

+3

Hai provato il ricciolo? –

+0

Puoi usare la funzione, ma non con gli URL, solo con i file locali, questo è quello che ti dice il messaggio di errore. – Tobias

+1

'file_get_contents()' potrebbe essere utilizzato per aprire gli URL, ma non può gestire i timeout o funzionare dietro un proxy. –

risposta

19

In realtà la funzione file_get_contents non viene disattivato,
ma allow_url_fopen è disabilitata

è possibile sostituirlo 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); 

Tuttavia, se si blocco del server il traffico in uscita, curl non aiuta troppo

+0

È possibile utilizzare CUrl per ottenere il contenuto e quindi manipolarlo utilizzando Simple Html Dom Parser? – Silentbang

+0

sì, utilizzare insieme alla funzione 'simplexml_load_string' – ajreal

2

cURL è la solita soluzione standard.

0

Utilizzare curl e perché è necessario modificare l'intestazione in testo normale per recuperare i dati? Questo non è necessario se si stanno recuperando dati.

0

se si dispone di arricciatura, usarlo è ottimo per questo.


      $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);