【问题标题】:Is there anyway to produce readable HTML source from PHP?无论如何可以从 PHP 生成可读的 HTML 源代码吗?
【发布时间】:2013-06-28 15:59:49
【问题描述】:

我对php不是很有经验,所以如果有一个简单的函数,我会觉得自己像个白痴。

在 PHP 中编码时,当您需要回显一些 HTML 代码时,我发现我有两种选择之一。

答:echo "<!--html text here-->";

乙:echo "\t\t\t<!--html text here-->\n";

如果我在整个代码中使用方法 A,则使用 view-source 从客户端查看 php 代码会产生难以阅读的可靠代码块。

如果我使用方法 B,它在客户端看起来不错,但实际的源代码看起来很乱。

有没有办法让服务器和客户端的外观都保持干净?

【问题讨论】:

标签: php html


【解决方案1】:

类似的东西

<?php 
//php code here
?>

//html code
<h3> <?= $justADynamicVariable ?> </h3>
<?php
//continue php code
 ?>

【讨论】:

  • 我想补充一点 if, else... 可以跨越多个 php 代码部分,因此在这个答案中,您可以在第一个 php 代码部分开始 if(){ 并结束它第二个有一个}
  • 是的,您可以采用相同的格式。在您的 php 代码的一部分中开始一个 if 条件,并根据需要在另一部分中以 } 大括号结束它。为了便于阅读,您必须正确缩进
  • -1:你把 PHP 注释放在 PHP 块之外,这很混乱。
【解决方案2】:

前端代码不可读是由于您的 PHP 代码分解不当造成的

出现文字墙问题是因为您的代码混乱。你在同一个地方有逻辑和显示代码(从你从 PHP 块中回显 HTML 的事实可以看出),这总是会产生不可读和丑陋的代码。

查看Model-View-Controller pattern,将逻辑代码与显示代码分开。然后,使用一些内联 PHP 以主要 HTML 格式编写显示代码:

<div>
    Welcome back <?= $this->username; ?>
</div>

如果您必须从 PHP 块中回显 HTML 代码,则您的代码可能是错误的。

生成可读代码的其他有用技巧:

使用替代的 PHP 控制块

这个:

<div id='somediv'>
<?php if($something): ?>
    Some stuff
<?php endif; ?>
</div>

比这更具可读性:

<div id='somediv'>
<?php if($something) { ?>
    Some stuff
<?php } ?>
</div>

而且它肯定比你现在正在使用的这个更好:

<?php
    echo "<div id='somediv'>";
    if($something) {
        echo "Some stuff";
    }
    echo "</div>";
?>

【讨论】:

    【解决方案3】:

    你可以只关闭php标签(?>),写html块并返回php(

    【讨论】:

      【解决方案4】:

      使用模板引擎,例如 Twig http://twig.sensiolabs.org/,它允许您将逻辑从模板中分离出来,这样您就可以使用简单的语法编写非常容易的标记来放入动态变量。

      使用 Chrome 之类的浏览器,当您使用 Web 开发人员工具 http://discover-devtools.codeschool.com/ 时,它会自动为您缩进源代码。您甚至可以非常快速地将结果复制粘贴到新文件中。一般来说,担心输出间隔良好的 html 是个坏主意,因为软件可以很容易地清理它。

      【讨论】:

        【解决方案5】:

        生成 html 的方法有很多,取决于它是单行还是整个 HTML 块。

        重要的是可读性。

        echo "<div><p>Hi ".$name."</p></div>";
        

        不是不可读的 persé,它可能很烦人,因为它不会在许多 IDE 中突出显示。 这是始终将 html 和 php 分开的一个很好的理由,这意味着始终将 html 部分放在 php 标签之外。

        所以你可以在之前结束你的 php 块并在之后再次打开它:

        if(TRUE) {
        ?>
            <div><p>Hi <?php echo $name;?></p></div>
        <?php 
        }
        

        如果您在一个主要包含 html 的大文件中有 PHP,您最好使用php control blocks

        <!--html text here-->
        <?php if(TRUE):?>
            <div>
                <p>Hello <?php echo $name;?></p>
            </div>
        </php endif;?>
        <!--html text here-->
        

        你也可以使用heredoc

        echo <<<EOD
                <div>
                    <p>This is html</p>
                </div>
        EOD;
        

        output buffering:

        ob_start();
        ?>
            <div>
                <p>Hello <?php echo $name;?></p>
            </div>
        <?php
        $html = ob_get_clean();
        
        echo $html;
        

        【讨论】:

          猜你喜欢
          • 2015-06-16
          • 1970-01-01
          • 1970-01-01
          • 2013-12-13
          • 2017-12-27
          • 2022-08-17
          • 1970-01-01
          • 2010-10-15
          • 2020-02-06
          相关资源
          最近更新 更多