2009-10-17 40 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