2010-11-22 31 views
6

Hola, ¿hay alguna manera de tomar el contenido de un archivo php mientras se procesa el código php en él? Necesito incluir un código en otra página pero necesito imprimir el contenido en una posición específica.file_get_contents y php code

Si uso include, el código se imprimirá antes de la etiqueta html por supuesto porque se procesa antes que la página, pero si uso file_get_contents el contenido se toma en la página pero si tengo algunas etiquetas php obtendré esas también como texto sin formato.

Gracias.

EDIT: lo siento chicos parece que estaba borracho mientras escribía. Yo corregí.

Tengo un motor que procesa los contenidos de la página, los coloca en una variable y luego los imprime en una posición específica dentro de la página html. En el motor necesito "incrustar" el código de otras páginas "estáticas" que podrían tener algunas etiquetas php. Si uso file_get_contents obtendré el contenido como texto sin formato (con etiquetas php no analizadas) si uso include no funcionará porque no es la función para él. Entonces, lo que necesito es incorporar el código procesado en el motor (como HTML listo para imprimir).

+3

Puede aclarar qué es exactamente lo que quiere y por qué un 'include()' mediante una ruta de sistema de archivos no funcionará para usted? No entiendo. –

+0

¿Puedes reformular? Realmente no entiendo lo que estás diciendo. – robbrit

+0

Gracias por la aclaración. Asumí correctamente en mi respuesta. – ceejayoz

Respuesta

22

Puede usar un output buffer para incluir un archivo PHP, pero guarde la salida resultante para usarla posteriormente en lugar de imprimirla inmediatamente en el navegador.

ob_start(); 
include('path/to/file.php'); 
$output = ob_get_contents(); 
ob_end_clean(); 

// now do something with $output 
+1

No estoy seguro de si esto es lo que necesita, ya que * parece * querer el código fuente PHP ... No está claro * qué * él necesita –

+0

Él dice "si uso file_get_contents el contenido es tomado pero si tengo algunas etiquetas php Voy a obtener esos también como texto sin formato ", lo que indica que esto es lo que está tratando de hacer. – ceejayoz

+0

He leído esa parte de manera diferente pero creo que tienes razón –

-1

Su pregunta no es 100% claro, pero parece que quiere incluir una fuente PHP remoto, puede utilizar include ("http://domain.com/path/to/php.phps"); en lugar de un archivo_get_contents.

Dijiste que solo necesitas una parte del código remoto, si es así, puedes usar file_get_contents, obtener esta porción del código con substr o reg exp save en un archivo local e incluir o hacer una evaluación.

Ninguna de las soluciones es segura ni recomendada, nunca debe incluir archivos remotos para evaluar directamente su código.

-1

Si entiendo correctamente; Está intentando cargar un archivo php para leer su contenido y ejecutarlo al mismo tiempo.

es decir: include('/foo/bar') y file_get_contents('/foo/bar')

La siguiente función hace ambas cosas y devuelve el contenido del archivo suponiendo que existe.

function load_and_process($path) { 
    if(file_exists($path) { 
     include($path); 
     return file_get_contents($path); 
    } 
    return false; 
} 

y lo llaman así:

if($file_contents = load_and_process('/foo/bar')) { 
    echo "Loaded $file_contents from /foo/bar"; 
} 
Cuestiones relacionadas