2010-02-13 23 views
8

pregunta muy simple php,cómo el texto de regresar de una página php

por ejemplo, demo.php sólo devuelve un texto como este "hola".

¿cómo puedo obtener este texto de otra página php?

ACTUALIZACIÓN:

De hecho, me refiero a la página que está emitiendo como esto "imprimir 'hola';"

+0

Ahmet, en cuyo caso cambie su respuesta aceptada. Creo que mi respuesta contiene la solución. –

Respuesta

7

¿Lo hace return "hello", lo hace salidahello o simplemente contienehello? Los tres escenarios son problemas diferentes.


Si return "hello"; como tal:

<?php 
return "hello"; 

continuación, se puede agarrar fácilmente su valor mediante la inclusión del archivo y agarrando el valor de retorno:

<?php 
$fileValue = include('secondFile.php'); 

Si salidashello como tales:

<?php 
echo "hello"; // or print "hello"; 

debe utilizar búfer de salida para capturar el resultado:

<?php 
ob_start(); 
include('secondFile.php'); 
$fileValue = ob_get_contents(); 
ob_end_clean(); 

Si contienehello como tal:

hello 

puede simplemente leer el resultado:

<?php 
$fileValue = file_get_contents('secondFile.txt'); 

Ver también:

+0

salidas "hola" sí –

+0

Guau, respuesta increíble, muy agradable;) – Daan

2

EDITAR: Inicialmente había asumido que la ejecución de file_get_contents en una secuencia de comandos obtendría la salida (y no el código). Si desea que la salida de , es necesario especificar la URL completa:

$str = file_get_contents("http://example.com/demo.php"); 

http://php.net/manual/en/function.file-get-contents.php

probablemente sería mejor si usted aceptó una de las respuestas más detalladas.

Asimismo, véase el siguiente:

+0

Doh, fue "devuelve ese valor" ya que "solo contiene esa cadena"? :) –

+0

mi comprensión fue 'el resultado de demo.php es la cadena' hola ''. – karim79

+0

Pero eso sería obtener el código fuente completo de demo.php, ¿no? –

0

El texto se devuelve w PHP gallina interpreta la página - lo que significa que tiene que o bien:

  • Ejecutar PHP desde la línea de comandos
  • o llame a la página a través de su servidor web - que es lo que generalmente tenderá a hacer.


En el segundo caso, es necesario enviar una solicitud HTTP, a buscar el resultado, que se puede hacer utilizando file_get_contents(si la directiva de configuración allow_url_fopen está activado):

$content = file_get_contents('http://www.yoursite.com/demo.php'); 


Otra solución, especialmente útil cuando allow_url_fopen está deshabilitado, es usar curl; ver por ejemplo los ejemplos en la página de la función curl_exec.

+0

-1: No use 'file_get_contents()' con url. La configuración 'allow_url_fopen' está desactivada por razones de seguridad. Se recomienda la mejor práctica para mantenerlo así. –

+0

@Andrew: Me gusta usar 'file_get_contents' * (y otras funciones) * con URL, y nunca tuve ningún problema al hacerlo ;; 'allow_url_fopen' parece estar habilitado por defecto * (ver http://www.php.net/manual/en/filesystem.configuration.php) * ;; por otro lado, no utilizaría el acceso a URL para 'require' /' include', lo que significa que mantendría la directiva 'allow_url_include' desactivada, que también es su valor predeterminado. –

+0

@Pascal MARTIN: Si 'allow_url_include' está deshabilitado, tener' allow_url_fopen' también puede hacer que su sitio web sea vulnerable a los ataques XSS sin una validación de entrada adecuada. Consulte la página siguiente sobre 'allow_url_fopen' en el sitio web ** PHP Security Consortium **: http://phpsec.org/projects/phpsecinfo/tests/allow_url_fopen.html –

2

¿Qué quiere decir con "returns hello"?

Si realmente lo devuelve como en

return "hello"; 

puede obtener el valor simple como esto:

$var = include 'demo.php' 

si vale echo es que valoran en su lugar, se puede leer su salida:

$var = file_get_contents("http://host/demo.php"); 
+0

-1: No use 'file_get_contents()' con url. La configuración 'allow_url_fopen' está desactivada por razones de seguridad. Se recomienda la mejor práctica para mantenerlo así. –

+0

No estoy de acuerdo con esta recomendación, las variables de configuración no deberían establecerse solo para cuidar a los malos desarrolladores. 'allow_url_fopen' es conveniente y por sí solo no causa ningún daño. Puede escribir código inseguro incluso con todas las cosas apagadas. –

1

file_get_contents es la solución más sencilla, sin embargo curvatura es mucho más eficiente. Es más rápido, más seguro y más flexible.

function file_get_contents_curl($url){ 
    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1); 
    $content = curl_exec($ch); 
    curl_close($ch); 
    return $content; 
} 

$page = file_get_contents_curl('demo.php'); 
Cuestiones relacionadas