Php 如何防止内联<;?=文本?>;语句是否会弄乱显示的源代码?

Php 如何防止内联<;?=文本?>;语句是否会弄乱显示的源代码?,php,xhtml,formatting,Php,Xhtml,Formatting,在PHP中,每当我执行以下操作时: <span>Blah blah HTML</span> <?= echo $this->foo ?> <br /> 废话废话HTML 在源代码中,它显示如下: <span>Blah blah HTML</span> {$this->foo whatever it is} <br /> <div id="foo"> <div

在PHP中,每当我执行以下操作时:

<span>Blah blah HTML</span>
<?= echo $this->foo ?>
<br />
废话废话HTML

在源代码中,它显示如下:

<span>Blah blah HTML</span>
{$this->foo whatever it is}     <br />
<div id="foo">
    <div class="bar">
<?
foreach(whatever)
{
?>
    </div>
</div>
废话废话HTML
{$this->foo无论它是什么}
而不是

<span>Blah blah HTML</span>
{$this->foo whatever it is}
<br />
废话废话HTML
{$this->foo无论它是什么}

这种事经常发生。内联PHP使我的新行都不可靠,这让我很烦恼。当您在HTML中启动完整的PHP块,但与HTML选项卡保持一致时,也会发生这种情况。例如:

<div id="foo">
    <div class="bar">
    <?
        foreach(whatever)
        {
    ?>
    </div>
</div>

会弄乱源代码的格式,我必须这样做:

<span>Blah blah HTML</span>
{$this->foo whatever it is}     <br />
<div id="foo">
    <div class="bar">
<?
foreach(whatever)
{
?>
    </div>
</div>

如果您担心html的格式问题。然后你需要添加一个换行符

<span>Blah blah HTML</span>
<?= echo $this->foo."\n" ?>
<br />
废话废话HTML

但要小心,这是一条危险的路线。因为接下来你要担心的是标签缩进。然后,您将在所有位置添加一堆
\t
。一段时间后,您的代码将输出一个干净整洁的html,但几乎无法作为源代码阅读


所以我的建议。如果您担心html的格式,请不要太担心。

。然后你需要添加一个换行符

<span>Blah blah HTML</span>
<?= echo $this->foo."\n" ?>
<br />
废话废话HTML

但要小心,这是一条危险的路线。因为接下来你要担心的是标签缩进。然后,您将在所有位置添加一堆
\t
。一段时间后,您的代码将输出一个干净整洁的html,但几乎无法作为源代码阅读


所以我的建议。不用太担心。

对于第一个问题,您可以使用换行符\n


我对第二项不太确定。请问您为什么担心输出的html?如果是因为您正在使用它来查看输出,我可以向您介绍firebug吗?Firebug将为您清晰地显示DOM树(甚至通过DOM注入使其保持更新)。

对于第一个问题,您可以使用换行符\n


我对第二项不太确定。请问您为什么担心输出的html?如果是因为您正在使用它来查看输出,我可以向您介绍firebug吗?Firebug将为您清晰地显示DOM树(甚至通过DOM注入使其保持更新)。

使用工具查看生成的HTML代码,例如,该工具可自动设置格式

安装Firebug后,只需按F12键并选择HTML选项卡。您可以使用树控件来导航HTML源代码,该控件可以漂亮地打印标记

如果在Firefox以外的浏览器中开发,则可以使用。只需将Firebug Lite网页上的HTML片段注入您的站点


请记住,消除多余的空白可以提高网站的性能,因此“缩小”HTML不一定是件坏事。

使用工具查看生成的HTML代码,例如,自动设置格式

安装Firebug后,只需按F12键并选择HTML选项卡。您可以使用树控件来导航HTML源代码,该控件可以漂亮地打印标记

如果在Firefox以外的浏览器中开发,则可以使用。只需将Firebug Lite网页上的HTML片段注入您的站点


请记住,消除多余的空白可以提高网站的性能,因此“缩小”HTML并不一定是件坏事。

如果您希望HTML输出美观,并且不想依赖firebug等浏览器工具,PHP有一个名为的类可以做到这一点


另外,短标记(
)已被弃用。如果您希望HTML输出美观,并且不想依赖firebug等浏览器工具,那么您可能需要切换到(

,PHP有一个名为的类可以实现这一点


另外,短标记(
)已被弃用。您可能想切换到(

不幸的是,您无法直接对此做很多事情。虽然对我们人类来说,查看源代码是很好的缩进,但是HTML规范一直认为空白是无关紧要的,因此开发HTML系统的人通常不考虑为细粒度控件添加特征。此外,您描述的行为使PHP变得更加灵活。例如,如果它被用于生成空白明显的输出,那么您描述的行为将是可取的

如果您认为缩进良好的HTML源代码对您很重要,那么您需要在输出周围放置一个系统来处理格式设置。与其直接输出,还不如截取您的输出并自动为您处理格式设置。输出缓冲是您可以实现这一点的一个方法

ob_start();
//...
//a bunch of code that echos or prints HTML
//...
$output = ob_get_clean();
echo some_function_or_method_call_to_format_your_html_however_you_want($output);
some\u function\u或\u method\u call\u to\u format\u your\u html\u however\u your\u want
的实现,如果留给读者作为练习,尽管PHP中整洁的函数可能是一个很好的开始


您还可以采取其他方法,例如通过对象路由所有输出,该对象可以根据上下文确定要添加到输出中的制表符或换行符的数量。主要的一点是PHP本身并不能帮助您解决这个问题,但是确实为您提供了构建自己的解决方案的工具。

不幸的是,您无法直接对此做很多事情。虽然对我们人类来说,查看源代码是很好的缩进,但是HTML规范一直认为空白是无关紧要的,因此开发HTML系统的人通常不考虑为细粒度控件添加特征。此外,您描述的行为使PHP变得更加灵活。例如,如果是
<span>Blah blah HTML</span>
{$this->foo whatever it is}     <br />
<?php
    $replyn= count($replies);
?>
<?php if ($replyn)==0) {?>
    <p> (no replies.) </p>
<?php } else { ?>
    <h3> Replies </h3>
    <?php for ($i= 0; $i<$replyn; $i++) { ?>
        <p>
            <?php echo(htmlspecialchars($replies[$i], ENT_QUOTES)); ?>
        </p>
    <?php } ?>
<?php } ?>