2011-09-19 17 views
8

Vorrei chiamare una pagina PHP da una pagina PHP e restituire l'output della pagina che ho chiamato come singola variabile.Come chiamare PHP un'altra pagina e ottenere l'output come variabile?

require non è adatto ai miei scopi poiché ho bisogno dell'output memorizzato come variabile per un uso successivo, piuttosto che emetterlo immediatamente.

IE:

page1.php 
<?php 

echo 'Hello World!<br>'; 
$output = call_page('page2.php'); 
echo 'Go for it!<br>'; 
echo $output; 

?> 

page2.php 
<?php 

echo "Is this real life?<br>"; 

?> 

Would output 

Hello World! 
Go for it! 
Is this real life? 
+2

Io lo chiamerei via http: // e cURL (http: // php .net/manuale/it/book.curl.php). –

+0

hanno output di page2.php a var, quindi require \ include potrebbe essere usato. –

risposta

6

require in realtà è esattamente ciò che si vuole (in combinazione con il buffer di uscita):

ob_start(); 
require 'page2.php'; 
$output = ob_get_clean(); 
+3

Ciò consente di passare parametri allo script invocato? Cioèrichiede 'page2.php? foo = bar'; –

5
ob_start(); 
include('otherpage.php'); 
$output = ob_get_clean(); 

Un metodo migliore sarebbe quello di incapsulare tutto ciò che si sta facendo in quel altra pagina come una funzione, che è quindi possibile chiamare da entrambe le pagine. Questo ti permette di riutilizzare il codice senza dover scherzare con il buffer di output e quant'altro.

8

è possibile utilizzare il metodo file_get_contents, questo restituisce una stringa contenente il contenuto della pagina che avete richiesto - http://php.net/manual/en/function.file-get-contents.php

$contents = file_get_contents('http://www.stackoverflow.com/'); 
echo $contents; 
+1

ESATTAMENTE quello che stavo cercando. E funziona cross site! – Coomie

+0

restituisce il codice anziché l'output echo per me –

-2

Voglio creare pdf da file .php esistenti.
Da risposte sopra ho 3 opzioni:
1.rewrite .php file
2.use buffer:

$_GET["id"]="4"; 
ob_start(); 
include 'test.php'; 
$TextPDF = ob_get_clean(); 

3.Get dati di url:

$serv = "http".(($_SERVER["HTTPS"] == "on")?'s':'')."://".$_SERVER["SERVER_NAME"]; 
$TextPDF = file_get_contents($serv.'/test.php?id=4'); 

Penso che usa la terza opzione, quindi non devo modificare i file esistenti.

+0

Questa risposta sembra indirizzare un argomento specifico della domanda. Se ritieni che una delle risposte sopra la tua sia corretta, contrassegnala come tale piuttosto che rilanciarla. –

18

Per chiarire una certa confusione quando si utilizza file_get_contents(), notare che:

  1. Utilizzo con il URL completo sarà yeild l'uscita html della pagina:

    $contents = file_get_contents('http://www.example-domain.com/example.php'); 
    
  2. Mentre utilizzandolo con il percorso file otterrai il codice sorgente della pagina:

    $contents = file_get_contents('./example.php'); 
    
0

Nel mio caso, nessuna delle soluzioni Pubblicato lavorato per me. Solo il commento di Ondřej Mirtes ha funzionato. Ho voluto eseguire uno script, passando alcuni parametri:

anotherscript.php?param=value 

Quindi, la soluzione era quella di utilizzare cURL:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http".(($_SERVER["HTTPS"] == "on")?'s':'')."://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/anotherscript.php?param=value"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec($ch); 
curl_close($ch); 
Problemi correlati