2009-10-17 20 views
21

Jestem nowy php i zastanawiając się, czy może mam coś takiego:HTML pod zmienną PHP (HTML poza kodu PHP)

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

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

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

Co muszę używać teraz jest

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

Co jest denerwujące i nieczytelne.

+1

Co chcesz przez to osiągnąć? – Chuck

+3

Próbuję umieścić kod HTML w zmiennej php –

Odpowiedz

66

Czy próbowałeś "buforowania wyjściowego"?

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

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

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

Dzięki. Tego właśnie szukałem! –

+0

Jeszcze jedno pytanie =) Czy można w nim umieścić inną zmienną php? ... $ zawartość –

+1

Jasne. Zmodyfikowałem kod, aby można było zobaczyć, jak to zrobić. – Wabbitseason

4

Nie jestem pewien, co chce osiągnąć, ale myślę, że coś takiego jak heredoc syntax może być przydatne dla Ciebie:

<? 
$variable = <<< MYSTRING 

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

MYSTRING; 

Jeśli jednak staramy się szablony HTML Gorąco polecam, aby uzyskać prawdziwy silnik szablonowy, taki jak Smarty, Dwoo lub Savant.

14

Myślę, że chcesz składnię heredoc.

Na przykład:

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

Ok, co chcesz zrobić, to możliwe w modzie.

Nie można po prostu przypisać bloku HTML do zmiennej php lub zrobić to za pomocą funkcji. Istnieje jednak wiele sposobów uzyskania pożądanego rezultatu.

  1. Zbadaj użycie silnika szablonowego (sugeruję, abyś zrobił to tak, jak jest to warte w każdym razie). Używam smarty, ale jest wiele innych
  2. Drugim jest użycie bufora wyjściowego.

Jednym z problemów jest to, że dowolny HTML na twojej stronie jest natychmiast wysyłany do klienta, co oznacza, że ​​nie można go używać jako zmiennej w php. Jednak jeśli użyjesz funkcji 01-ob_start i ob_end_fush, możesz osiągnąć to, co chcesz.

np

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

?> 

Nadzieja pomaga to można przeczytać na output buffers w docs PHP.

-8

jej naprawdę szalony, ale należy pamiętać, że jeśli robisz to:

<?php echo ""; ?> 

Dostaniesz go:

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

zachować spokój, jej tylko php próbuje włączyć się do szału.

+5

To nigdy nie jest poprawna odpowiedź. Prawdopodobnie obejrzałeś źródło dom w przeglądarce dla pustej strony i byłeś zdumiony. – Davit

0

Zdecydowanie zaleca się ZAWSZE UNIKAĆ funkcji bufora (ob_start itd.). Zamiast korzystać z innych rozwiązań standardowych:

Rozwiązanie 1:

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

//execute anywhere 
Show_My_Html(); 

Rozwiązanie 2:

spędzić kilka minut i zakodować go:

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

Najlepsze rozwiązania, dzięki. –