【问题标题】:What's the best way to format long strings of HTML in PHP?在 PHP 中格式化长 HTML 字符串的最佳方法是什么?
【发布时间】:2011-01-29 12:18:28
【问题描述】:

我知道这确实是一个主观问题,但为了最佳实践(和可读性),我似乎无法解决格式化长 HTML 字符串的最佳方法。我通常这样做:

echo '
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
';

但我仍然不喜欢这个结果,尤其是如果它出现在一大块代码的中间。只是感觉很乱。

【问题讨论】:

    标签: php code-formatting


    【解决方案1】:

    我更喜欢像 Code Igniter 这样的 MVC 架构来将表示与逻辑分开。基本上,您的所有模板都是单独存储的,您可以使用here 中描述的 PHP 替代语法结构来格式化您的 HTML。

    【讨论】:

      【解决方案2】:

      最好的方法是使用模板系统,您可以在其中将逻辑与表示分离。在模板中,您只有以下内容:

      <html>
      <body>
      
      <h1><?php echo $title; ?></h1>
      <p><?php echo $myparagraph; ?></p>
      
      </body>
      </html>
      

      【讨论】:

        【解决方案3】:

        老派 Perl 风格 heredoc 也可以:

        echo <<<EOL
        <div>
            <p>Content Inside</p>
            <div class="subbox">
                <ul>
                    <li>etc.</li>
                    <li>etc.</li>
                    <li>etc.</li>
                    <li>etc.</li>
                </ul>
            </div>
        </div>
        EOL;
        

        使用多个 &lt;?php ?&gt; 块更简洁,但如果您在类定义或其他东西中,heredoc 可能不那么尴尬(尽管从类定义中打印 HTML 只是尴尬)。

        【讨论】:

          【解决方案4】:

          我会这样做:

          echo '<div>
                   <p>Content Inside</p>
                   <div class="subbox">
                       <ul>
                           <li>etc.</li>
                           <li>etc.</li>
                           <li>etc.</li>
                           <li>etc.</li>
                      </ul>
                   </div>
                </div>';
          

          【讨论】:

            【解决方案5】:

            可以跳出PHP直接输入HTML:

            <?php $var = "foo"; ?>
            <div>
              <ul>
                <li>Foo</li>
              </ul>
            </div>
            <?php $foo = "var"; ?>
            

            如果您所做的只是回显/打印,我认为这更干净。此外,您无需在 HTML 本身中遍历和转义单引号/双引号。

            如果您需要将 HTML 存储在变量中,您可以使用 HEREDOC:

            $str = <<<EOD
            <div>
              <ul>
                <li>Foo</li>
              </ul>
            </div>
            EOD;
            

            【讨论】:

            • 是的,我也这样做,但我特别指的是那些我必须将长 HTML 字符串嵌入 PHP 的实例(例如,对于 AJAX 函数)。我对很多这些东西还是新手,但在我看来,这种方法只能让你到目前为止,而且有时你需要将相当大的 HTML 字符串嵌入 PHP,除非我是只是做错了……
            • @dclowd9901:您使用echo 的示例不需要字符串在PHP 本身中。使用 AJAX,您只需发送纯文本。因此,无论它是以 HTML 开头,还是以打印的 PHP 字符串开头,都没有区别。希望这会有所帮助!
            【解决方案6】:

            为什么不直接将 PHP 嵌入 HTML 中呢?这就是 PHP 最初的设计方式。

            // PHP goes here
            ?>
            <div>
                <p>Content Inside</p>
                <div class="subbox">
                    <ul>
                        <li>etc.</li>
                        <li>etc.</li>
                        <li>etc.</li>
                        <li>etc.</li>
                    </ul>
                </div>
            </div>
            <?php
            // More PHP here
            

            【讨论】:

              猜你喜欢
              • 2010-10-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-31
              • 1970-01-01
              • 2012-05-31
              相关资源
              最近更新 更多