2011-09-19 17 views
8

Me gustaría llamar a una página PHP desde una página PHP, y devolver el resultado de la página que llamé como una variable única.¿Cómo llamar PHP a otra página y obtener salida como variable?

require no sería adecuado para mis propósitos, ya que necesito la salida almacenada como una variable para su uso posterior, en lugar de hacerlo en forma inmediata.

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

Lo llamaría a través de http: // y el rizo (http: // php .net/manual/en/book.curl.php). –

+0

tienen page2.php salida una var, entonces require \ include podría ser utilizado. –

Respuesta

6

require es en realidad exactamente lo que quiere (en combinación con búferes de salida):

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

¿Esto permite pasar parámetros al script invocado? Es decir.requiere 'page2.php? foo = bar'; –

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

Un método mejor sería para encapsular todo lo que se está haciendo en esa otra página como una función, que luego se puede llamar desde ambas páginas. Esto le permite reutilizar el código sin tener que perder el búfer de salida y otras cosas.

8

se puede utilizar el método de file_get_contents, esto devuelve una cadena que contiene el contenido de la página que solicita - http://php.net/manual/en/function.file-get-contents.php

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

EXACTAMENTE lo que estaba buscando. ¡Y funciona a través del sitio! – Coomie

+0

devuelve código en lugar de eco para mí –

-2

Quiero crear pdf a partir de archivos .php existentes. De
respuestas anteriores tengo 3 opciones:
1.rewrite .php archivos
2.use búfer de datos:

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

3.Obtener por url:

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

creo que lo haré use la tercera opción, entonces no tengo que modificar los archivos existentes.

+0

Esta respuesta parece abordar un tema específico de la pregunta. Si cree que una de las respuestas anteriores es correcta, márquela como tal en lugar de repetirla. –

18

Para aclarar cierta confusión cuando se utiliza file_get_contents(), observe que:

  1. Utilización con el URL completa se yeild la salida html de la página:

    $contents = file_get_contents('http://www.example-domain.com/example.php'); 
    
  2. Mientras Si lo usa con , la ruta del archivo obtendrá el código fuente de la página:

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

En mi caso, ninguna de las soluciones publicado trabajó para mí. Solo el comentario por Ondřej Mirtes funcionó. Quería ejecutar un script, pasando algunos parámetros:

anotherscript.php?param=value 

Por lo tanto, la solución fue usar 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); 
Cuestiones relacionadas