2009-10-17 74 views
21

我新的PHP和想知道如果我能有這樣的事情:HTML到PHP變量(HTML以外的PHP代碼)

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

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

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

我現在所擁有的使用是

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

這是煩人的,不可讀的。

+1

什麼是你想實現什麼? – Chuck 2009-10-17 06:40:49

+3

我想將html代碼放入一個php變量 – 2009-10-17 06:43:11

回答

66

你試過「輸出緩衝」嗎?

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

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

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

謝謝。這正是我正在尋找的! – 2009-10-17 06:53:24

+0

還有一個問題=)有可能把其他的PHP變量放在裏面嗎? ... $內容 – 2009-10-17 06:55:39

+1

肯定。我修改了代碼,所以你可以看到如何做到這一點。 – Wabbitseason 2009-10-17 06:58:48

4

我真的不知道你正在試圖完成的任務,但我覺得有點像heredoc syntax可能對您有用:如果你正試圖使HTML模板

<? 
$variable = <<< MYSTRING 

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

MYSTRING; 

然而我強烈建議你獲得一個真正的模板引擎,如Smarty,DwooSavant

14

我想你想要heredoc語法。

例如:

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

好你想要做什麼的方式是可行的。

你不能簡單地把一個HTML塊分配給一個php變量或者用一個函數來完成。然而,有很多方法可以獲得您想要的結果。

  1. 調查使用模板引擎(我建議你這樣做,因爲它是值得的,無論如何)。我使用smarty,但也有許多其他
  2. 第二個是使用輸出緩衝區。

您遇到的問題之一是,您在頁面中的任何HTML都會立即發送到客戶端,這意味着它無法在php中用作變量。但是,如果使用函數 ob_start和ob_end_fush,則可以實現所需的功能。

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

?> 

希望這有助於你可以在PHP文檔上output buffers讀了。

-8

它真的瘋了,但要注意,如果你這樣做:

<?php echo ""; ?> 

你會得到它:

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

保持冷靜,它唯一的PHP試圖反過來,你瘋了。

+5

這從來不是一個正確的答案。您可能在瀏覽器中查看了一個空白頁面的dom源代碼,並且很驚訝。 – Davit 2013-08-30 23:18:08

0

我強烈建議總是避免緩衝區功能(ob_start等)。 而是使用其他標準溶液:

解決方案1:

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

//execute anywhere 
Show_My_Html(); 

解決方案2:

花幾分鐘,硬編碼:

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

最佳解決方案,謝謝。 – 2017-01-19 09:27:04