2011-04-06 184 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