2011-04-06 189 views
4

很難解釋,如何將HTML內容分配給PHP變量。在HTML內容不是內PHP script.as將HTML內容分配給PHP變量

<?php $a_div = ?><div>Contents goes <b>here</b></div> 
+1

爲你需要什麼我會使用HEREDOC? – 2011-04-06 07:45:27

+4

我真的需要它 – 2011-04-06 07:46:57

+0

電子郵件內容是在HTML中,我想要的是使用郵件()函數 – 2011-04-06 07:52:26

回答

15

嘗試用ob_get_contents:ob_get_contents()ob_get_clean()

<?php ob_start(); ?> 
<div>Contents goes <b>here</b></div> 
<?php $contents = ob_get_contents(); ?> 
+5

應該使用['ob_get_clean'](http://www.php.net/manual/en/function.ob-get-clean.php)來代替。 – Charles 2011-04-06 07:54:09

+0

@charles謝謝,添加了ob_get_clean。 – Robik 2011-04-06 07:58:11

+0

最新的區別是什麼? – 2011-04-06 08:00:03

0

可以使用DOMDocument爲了解析HTML文件,並得到你所需要的內容。

+0

這些解決方案到底是什麼?我不想顯示輸出。只需使用郵件功能進行郵件發送。 – 2011-04-06 09:54:43

+0

比使用HEREDOC。 – Headshota 2011-04-06 10:17:14

6

如果需要的話(通常我使用的HTML模板,通過PHP替換佔位符)... 有兩種方式:

$testVar = <<<EndOfHtml 
<div style="border: 48px solid red">test</div> 
EndOfHtml; 

print $testVar 

更簡單的方法,不是太優雅 - 包裹在單引號HTML代碼。所以你不必逃避任何雙引號:

$test_var = '<div style="border: 48px solid red">test</div>' 

對您有幫助嗎? :-)

+0

注意全部。錯誤 – 2011-04-06 08:04:50

+0

我喜歡這個解決方案,但它不在這裏工作 – 2011-04-06 08:05:15

+0

請問你可以發佈一個工作代碼嗎? – 2011-04-06 08:05:33

8

如果其原始的HTML,在它沒有PHP,存儲在獨立的文件中它也不過

$a_div = file_get_contents('email.html'); 

如果它的PHP文件,HTML與PHP混合則包括使用輸出緩衝它就像Robik的回答一樣。

ob_start(); 
include 'mail.template.php'; 
$a_div = ob_get_contents(); 

但如果它是比較小的,

$a_div = <<<HERE 
<div>Contents goes <b>here</b></div> 
HERE; 
+0

這有道理,但PHP標籤的起始和結束在哪裏? – 2011-04-06 07:57:33

+0

<?php $ a_div = <<

Contents goes here
<?php HERE; ?> – 2011-04-06 07:58:52

+0

@Xcoder就像腳本中的其他地方一樣。任何PHP代碼之前。結束標記是沒有必要的,雖然 – 2011-04-06 08:00:46