【问题标题】:PHP: Printing HTML-Friendly Code?PHP:打印 HTML 友好的代码?
【发布时间】:2010-03-01 00:59:10
【问题描述】:

我想知道在从 PHP 函数打印 HTML(多行)时是否有任何技术可以使 HTML 代码看起来不错?

尤其是新行和制表符。显然,我希望 HTML 标签在幕后看起来不错,并带有适当的新行和标签。但是,根据我调用打印 HTML 的 PHP 函数的时间,我可能需要在 1、2、3、4 等处启动选项卡。我不想将起始选项卡计数传递给 PHP打印 HTML 的函数。

那么,有人知道用 PHP 打印 HTML 友好代码的通用方法吗?或者是否有我遗漏的设计原则说“不要从 PHP 函数打印多条 HTML 行”。 ...

谢谢,

史蒂夫

【问题讨论】:

    标签: php coding-style


    【解决方案1】:

    我不会打扰。有了像 Firebug 这样的 DOM 检查工具随时可用,没有必要浪费时间让为计算机阅读而设计的东西看起来不错。其他人对此事的看法也见this question

    【讨论】:

    • 我想你忘记了“这个问题”的链接。谢谢。
    • +1 用于 Firebug,每个有效的 HTML/XML 都可以解析,格式化浪费时间
    【解决方案2】:

    标记清理

    有一些很棒的代码工具可以清理(即调整间距)和修复(即关闭打开的标签)。

    Tidy 是比较流行的 html 清理/修复工具之一。您可以使用 php 的输出缓冲区通过 Tidy on-the-fly 解析脚本的输出。

    Zend 开发区介绍 - http://devzone.zend.com/article/761 PHP 手册中的整洁文档 - http://www.php.net/manual/en/book.tidy.php

    现在,一个简单的例子,耶!

    <?php
    ob_start();
    
    echo '<div><b> messy</b> <div> <i>blarg</I></div>';
    echo '  <div>code rawr!</div>';
    
    $output = ob_get_clean();
    
    $tidy = tidy_parse_string($output);
    tidy_clean_repair($tidy);
    echo $tidy;
    ?>
    

    模板系统

    您应该使用模板系统来分离应用程序的逻辑(php 代码)和表示(html/标记/等)部分。

    使用这种做法有许多优点,其中包括使您的代码更易于维护和调试。

    这是一个巨大的讨论话题,几乎总是涉及框架和 MVC。有成千上万的资源,这里有一些:P

    用 PHP 编写模板系统 - http://www.codewalkers.com/c/a/Display-Tutorials/Writing-a-Template-System-in-PHP/
    Web 应用程序中业务逻辑与表示逻辑的分离 - http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=21

    【讨论】:

      【解决方案3】:

      如果您要生成有效的 xhtml,您可以 buffer your output 并在最后这样做:

      $dom = new DomDocument (('1.0', 'utf-8');
      $dom->loadHtml (ob_get_clean ());
      $dom->formatOutput = true; 
      echo $dom->saveXML ();
      

      如果您使用的是框架,则可以将其用作插件或过滤器。 这样,如果您将模板嵌入其他模板或使用帮助程序的输出,它也可以工作

      【讨论】:

        【解决方案4】:

        使用模板系统生成 HTML 并保持模板井井有条是一种简单的方法

        【讨论】:

          【解决方案5】:

          您不应该使用 php 打印 html。在模板中使用 php 的简写语法。

          <h1><?= $page_title ?></h1>
          <p><?= page_content ?></p>
          

          而不是

          <?php
          
          echo "<h1>" . $page_title . "</h1>";
          echo "<p>" . $page_content . "</p>";
          
          ?>
          

          【讨论】:

          • 哇,这没什么意义。 “你不应该用 PHP 打印 HTML,用 PHP 在另一个 PHP 文件中打印它。”
          • @nickf - 如果你仔细看,你会发现我根本没有打印 html。
          • 你认为$page_content$page_title是什么?
          • @nickf - "HTML 是以 HTML 元素的形式编写的,由标签组成,用尖括号括起来(如 )" $page_content 是用 html 标记的,它本身不是 html .
          • 问题显然是关于如何使用 PHP 整齐地格式化 HTML 代码。我认为看到 HTML 将在 PHP 中生成并存储到名为 $page_content 之类的变量中,我认为这并没有太大的想象力。例如:$page_content = "Hello &lt;em&gt;World&lt;/em&gt;."
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-18
          • 1970-01-01
          相关资源
          最近更新 更多