PHP:整个HTML页面作为变量 - 有更好的方法吗?

时间:2010-11-04 12:47:21

标签: php html variables concatenation

我有一个大表单,在表单的末尾向用户显示摘要:

You have entered:
<table>
    <tr>
        <td>First name</td>
        <td><?php echo $firstname ?></td>
    </tr>
    <tr>
        <td>Last name</td>
        <td><?php echo $lastname ?></td>
    </tr>
</table>

我首先设计了摘要页面,现在我想到将这个页面作为确认电子邮件发送给用户会很好。我现在所做的是:

<?php $summarypage = "<table>
        <tr>
            <td>First name</td>
            <td>".$firstname."</td>
        </tr>
        <tr>
            <td>Last name</td>
            <td>".$lastname."</td>
        </tr>
    </table>";
echo $summarypage; ?>

对于循环,我在循环中使用$summarypage .= "blabla";

发送电子邮件时,我可以$summarypage将其附加到我的电子邮件正文中。美丽。

我正在做什么?这对我来说似乎非常“优雅” 当我在电子邮件中再次调用它时,$summarypage是不是完全重新呈现 - 这意味着所有与它连接的变量(例如$firstname)将再次被调用 - 性能猪?

是否有某种“缓冲区”我可以将$summarypage变量写入,所以之后我有一个纯文本变量? $newsummarypage = string($summarypage)可以解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

忽略该级别的表现,无所谓。如果您显示的方法适合您,请使用它。

使事情更具可读性的替代方案(因为你不需要PHP开启/关闭器)是HEREDOC

<?php $summarypage = <<<EOT
<table>
 <tr>
  <td>First name</td>
  <td>$firstname</td>
  </tr>
  <tr>
   <td>Last name</td>
   <td>$lastname</td>
  </tr>
</table>
EOT;
?>

答案 1 :(得分:2)

我认为你对php中的字符串/变量如何工作有点困惑。一个小例子可能有帮助

$s = "hello"; //stores the sequence 'h' 'e' 'l' 'l' 'o' in $s
$s = $s." world";//take the sequence stored in $s add the sequence ' world', 
                 //and store in $s again
echo $s; // prints 'hello world'. That is what $s contains, what $s is

$summary = "<div>".$firstname."</div>"; // take '<div>', lookup what $firstname
                 //contains and add that, then add '</div>' and then store this 
                 //new string thing('<div>Ishtar</div>') in $summary.

echo $summary; //$summary here knows nothing about $firstname, 
               //does not depend on it

使用它们时会评估所有变量。 (好吧,大多数时候你使用变量 评估它们。)

答案 2 :(得分:1)

$ summarypage是一个字符串,所以它只是分配给变量的一些数据 - 一个纯文本变量,如你所说。将数据分配到$ summarypage后,即可完成工作。您可以愉快地将其写入页面,电子邮件,数据库和文本文件,而无需与$ summarypage相关的其他性能点击。