【问题标题】:PHP: Breaking out of PHP for HTML but return as value instead of print on page?PHP:为 HTML 打破 PHP 但作为值返回而不是在页面上打印?
【发布时间】:2009-10-14 18:25:13
【问题描述】:

我正在通过 PHP 生成大量 HTML 代码,但我需要将其存储在变量中,而不是立即显示。但我希望能够摆脱 PHP,所以我的代码不是一个巨大的字符串。

例如(但实际代码会大得多):

<?php
$content = '<div>
    <span>text</span>
    <a href="#">link</a>
</div>';
?>

我想做这样的事情:

<?php
$content = 
?>
<div>
    <span>text</span>
    <a href="#">link</a>
</div>
<?php
;
?>

但我知道这不会将 html 作为值返回,它只会将其打印到文档中。

但是有没有办法做到这一点?

谢谢!

【问题讨论】:

    标签: php php4


    【解决方案1】:

    你可以使用output buffering:

    <?php
    ob_start();
    ?>
    <div>
        <span>text</span>
        <a href="#">link</a>
    </div>
    <?php
    $content = ob_get_clean();
    ?>
    

    或者稍微不同的方法是HEREDOC syntax

    <?php
    $content = <<<EOT
    <div>
        <span>text</span>
        <a href="#">link</a>
    </div>
    EOT;
    ?>
    

    【讨论】:

      【解决方案2】:

      试试这个:

      <?php
      $var = <<<EOD
      my long string
      EOD;
      echo $var; 
      ?>
      

      (编辑完成,但编辑速度比我快:))

      【讨论】:

        【解决方案3】:

        在我看来,你应该研究一个模板引擎,比如Smarty。它可以帮助您消除将 HTML 硬编码到 PHP 文件中的一些丑陋之处,并且可以帮助使代码更易于管理。

        【讨论】:

          【解决方案4】:

          您可以将 html 存储在一个 html 文件中,然后将该文件读入一个变量中。

          【讨论】:

            【解决方案5】:

            虽然在技术上仍然是一个字符串,但您可能会发现 PHP 的 heredoc 上的文档很有趣:

            heredoc syntax

            $content = <<<EOT
            
            <div>
                <span>text</span>
                <a href="#">link</a>
            </div>
            
            EOT;
            

            【讨论】:

              【解决方案6】:

              使用heredoc 语法。

              【讨论】:

                猜你喜欢
                • 2021-02-13
                • 1970-01-01
                • 1970-01-01
                • 2017-01-18
                • 2016-09-12
                • 2014-04-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多