2009-10-17 23 views
21

Soy nuevo en PHP y se pregunta si puede tener algo como esto:HTML en variable PHP (fuera de código PHP HTML)

<?php 
... 
magicFunctionStart(); 
?> 

<html> 
    <head>...</head> 
    <body>...</body> 
</html> 

<?php 
$variable = magicFunctionEnd(); 
... 
?> 

Lo que tengo que utilizar ahora es

<?php 
... 
$variable = "<html><head>...</head><body>...</body></html>" 
?> 

Que es molesto y no legible

+1

¿Qué estás tratando de lograr? – Chuck

+3

Estoy tratando de poner código html en una variable php –

Respuesta

66

¿Has probado "output buffering"?

<?php 
... 
ob_start(); 
?> 

<html> 
    <head>...</head> 
    <body>...<?php echo $another_variable ?></body> 
</html> 

<?php 
$variable = ob_get_clean(); 
... 
?> 
+0

Gracias. ¡Es lo que estaba buscando! –

+0

Una pregunta más =) ¿Es posible poner otra variable php dentro de ella? ... $ contenido –

+1

Claro. He modificado el código para que pueda ver cómo hacerlo. – Wabbitseason

4

No estoy realmente seguro de lo que está tratando de lograr, pero creo que algo así como el heredoc syntax podría ser útil para Usted:

<? 
$variable = <<< MYSTRING 

<html> 
    <head>...</head> 
    <body>...</body> 
</html> 

MYSTRING; 

Sin embargo, si usted está tratando de hacer plantillas HTML Le recomiendo que obtenga un motor de plantillas real, como Smarty, Dwoo o Savant.

14

Creo que desea la sintaxis heredoc.

Por ejemplo:

$var = <<<HTML 
<html> 
    <head> 
random crap here 
</html> 
HTML; 
1

Ok lo que quiere hacer es posible de una manera.

No se puede simplemente asignar un bloque de HTML a una variable php o hacerlo con una función. Sin embargo, hay varias maneras de obtener el resultado que desea.

  1. Investigue el uso de un motor de plantillas (sugiero que haga esto ya que de todos modos vale la pena). Yo uso smarty, pero hay muchos otros
  2. El segundo es usar un buffer de salida.

Uno de los problemas que tiene es que cualquier HTML que tenga en su página se envía inmediatamente al cliente, lo que significa que no se puede utilizar como una variable en php. Sin embargo, si usa las funciones ob_start y ob_end_fush, puede lograr lo que desea.

por ejemplo

<?php 
    somesetupcode(); 
    ob_start(); ?> 
<html> 
<body> 
html text 
</body> 
</html> 
<?php 
    //This will assign everything that has been output since call to ob_start to your variable. 
    $myHTML = ob_get_contents() ; 
    ob_end_flush(); 

?> 

Esperanza esto ayuda se puede leer en output buffers en php docs.

-8

Su realmente loco, pero tenga en cuenta que si lo hace:

<?php echo ""; ?> 

lo conseguirá:

<html><head></head><body></body></html> 

Mantenga la calma, su único php tratando a su vez loco.

+5

Nunca es una respuesta correcta. Probablemente vio una fuente dom en un navegador para una página vacía y se sorprendió. – Davit

0

Recomiendo SIEMPRE EVITAR funciones de búfer (ob_start y etc.). En lugar de utilizar otras soluciones estándar:

Solución 1:

function Show_My_Html(){ ?> 
    <html> 
     <head></head> 
     <body> 
     <div class="smth"> somethinggggggggggggg </div> 
     </body> 
    </html> 
    <?php 
} 

//execute anywhere 
Show_My_Html(); 

Solución 2:

pasar varios minutos y se hardcode:

$MyVar = 
    '<html>'. 
    '<head></head>'. 
    '<body>'. 
     '<div class="smth"> somethinggggggggggggg </div>'. 
     '</body>'. 
    '</html>'; 
+1

Las mejores soluciones, gracias. –