2009-10-17 13 views
21

Sono nuovo di php e si chiede se posso avere qualcosa di simile:HTML in variabile PHP (HTML codice PHP fuori)

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

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

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

Quello che ho da usare in questo momento è

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

Che è fastidioso e non leggibile.

+1

Cosa stai cercando di realizzare? – Chuck

+3

Sto provando a inserire il codice html in una variabile php –

risposta

66

Hai provato "buffer di output"?

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

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

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

Grazie. È quello che stavo cercando! –

+0

Un'altra domanda =) E 'possibile inserire altre variabili php al suo interno? ... $ content –

+1

Certo. Ho modificato il codice in modo da poter vedere come farlo. – Wabbitseason

4

Io non sono davvero sicuro di quello che si sta cercando di realizzare, ma penso che qualcosa di simile alla heredoc syntax potrebbe essere utile per voi:

<? 
$variable = <<< MYSTRING 

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

MYSTRING; 

Tuttavia, se si sta tentando di fare modelli HTML Ti consiglio vivamente di avere un vero motore di template, come Smarty, Dwoo o Savant.

14

Penso che tu voglia la sintassi heredoc.

Ad esempio:

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

Ok ciò che si vuole fare è possibile in una moda.

Non si può semplicemente assegnare un blocco di HTML a una variabile php o farlo con una funzione. Tuttavia ci sono diversi modi per ottenere il risultato che desideri.

  1. Investigare l'uso di un motore di template (suggerisco di farlo perché vale comunque la pena). Io uso smarty, ma ce ne sono molti altri
  2. Il secondo è utilizzare un buffer di output.

Uno dei problemi che si verifica è che qualsiasi HTML presente nella pagina viene immediatamente inviato al client, il che significa che non può essere utilizzato come variabile in php. Tuttavia, se si utilizzano le funzioni ob_start e ob_end_fush, è possibile ottenere ciò che si desidera.

esempio

<?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(); 

?> 

Spero che questo aiuti si può leggere su output buffers nei documenti php.

-8

La sua veramente pazzo, ma essere consapevoli che se lo fate:

<?php echo ""; ?> 

casa tua:

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

Mantenere la calma, il suo unico php cercando turno impazzire.

+5

Non è mai una risposta corretta. Probabilmente hai visto una fonte dom in un browser per una pagina vuota e ne sei rimasto sbalordito. – Davit

0

Si consiglia vivamente di EVITARE SEMPRE le funzioni del buffer (ob_start e così via). Utilizzare invece altre soluzioni standard:

Soluzione 1:

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

//execute anywhere 
Show_My_Html(); 

Soluzione 2:

trascorrere diversi minuti ed è hardcode:

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

Le migliori soluzioni, grazie. –