【问题标题】:Why when combine HTML and PHP, the HTML shown in "View Source" is not nested correctly? [duplicate]为什么结合 HTML 和 PHP 时,“查看源代码”中显示的 HTML 嵌套不正确? [复制]
【发布时间】:2015-10-11 17:11:56
【问题描述】:

我有两个 PHP 文件,它们在基于 MVC 的应用程序中用作视图。它们都包含大部分 HTML,但也包含一些由 Controller 发送给它们的变量。

ma​​intemplate.php:

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $viewModel->get('pageTitle'); ?></title>
    </head>
    <body>
        <?php require($this->viewFile); //index.php ?>
    </body>
</html>

index.php:

<ul>
    <li><a href="fanfics/list">fanfics list</a></li>
</ul>

问题是“查看源代码”中显示的代码(我检查了 Chrome、IE 和 FF)没有像我预期的那样嵌套。第一行嵌套正确 - 包含标签后四个空格,但其他行嵌套,就好像第一行之前根本没有空格一样。

查看源代码:

<!DOCTYPE html>
<html>
    <head>
        <title>Fanfiction application</title>
    </head>
    <body>
        <ul> <!-- 4 spaces after the body -->
    <li><a href="fanfic/list">fanfics list</a></li> <!-- No spaces after the body -->
</ul>    
    </body>
</html>

我尝试在 Google 和 StackOverflow 上搜索 bad nesting view source 的各种变体,但似乎没有一个结果能回答我的问题。

那我该如何解决呢?谢谢。

【问题讨论】:

  • include 只是从字面上输出文件中的任何内容。它不添加任何空格。第一行的空格只是来自require()之前的缩进&lt;?php
  • 为什么要“解决”这个问题?这根本不是问题。 HTML 标记会忽略除值属性内部之外的杂散空白。
  • mario - 我真的认为require 在这里更合适。该页面是必不可少的,如果未导入,我需要停止应用程序。 arkascha - 我相信每个人都应该能够使用您的 HTML。我相信这是现代发展的基础之一。我希望我的代码能够正确显示给那些想要使用它的人。
  • require & include 处理文件输出的包含相同,在布局,间距等方面,唯一的区别是文件是否必不可少(require)或不是(include
  • 通过输出处理器(如 tidy 或 htmlpurifier)运行生成的页面,如链接的欺骗中所建议的那样。

标签: php html view-source


【解决方案1】:

正如马里奥在 cmets 中所解释的......

ma​​intemplate.php:

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $viewModel->get('pageTitle'); ?></title>
    </head>
    <body>
<?php require($this->viewFile); //index.php ?>
    </body>
</html>

index.php:

        <ul>
            <li><a href="fanfics/list">fanfics list</a></li>
        </ul>

然后您的视图源将显示为您想要的。

查看您的 index.php 版本,第 2 行,缩进 4 个空格,这就是查看源代码中出现的内容。查看第 3 行,缩进 0 个空格,如查看源代码所示。这在新版本中通过缩进你想要的空格量来纠正。

至于第 1 行,在您的 index.php 中它没有缩进任何空格,因此它恰好出现在 maintemplate.php 中 require 部分开始的位置(已经缩进 8 个空格)

要求文件不会以任何方式改变缩进,它只是结合了您在文件中指定的内容。

在上面的版本中,index.php 中的所有行都手动缩进以匹配它们在源视图中的位置,你只需要记住不要缩进 require 行,因为任何缩进都会添加到index.php 中第 1 行的缩进

【讨论】:

  • 这样,代码将正确显示在“查看源代码”中,但不会显示在我使用的服务器文件上,我相信这要糟糕得多。
  • 我已经修改了我的答案,希望更清楚一点
  • 更清楚了,谢谢。但它仍然不是我所需要的。我希望能够在没有额外缩进的情况下在服务器和“查看源代码”中看到代码。谢谢。
  • 没有多余的缩进
  • 好吧,在你的回答中,index.php&lt;ul&gt; 之前有一些空格。这些就是我所说的空间。很抱歉我不清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 2019-02-24
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多