【问题标题】:Is there harm in outputting html vs. using echo?输出 html 与使用 echo 有什么害处吗?
【发布时间】:2011-01-29 01:30:43
【问题描述】:

我真的不知道该怎么说,但我可以演示一下:

<?php
if (true) {
echo "<h1>Content Title</h1>";
}
?>

<?php  if (true) {  ?>
<h1>Content Title</h1>
<?php  }  ?>

两者之间有什么区别?不使用echo会不会出现问题?编写 echo "html 代码" 似乎超级乏味;一直以来,特别是对于较大的 html 片段。

另外,对能够更好地改写我的问题的人表示感谢。 :)

【问题讨论】:

  • 我个人讨厌在输出大块文本时使用echo,但是YMMV。 ;) 您可能在转义字符方面遇到一些问题,但我想不出更多。
  • 不确定是否有任何真正的差异。对我来说,第一个使用起来可能更麻烦(转义引号和其他字符),但在 6 个月后查看代码时,它比第二个更容易阅读。

标签: php html tags echo


【解决方案1】:

这两种情况有细微的差别:

<?php
if (true) {
    echo "<h1>Content Title</h1>";
}
?>

在这里,因为您在字符串中使用了double quotes,所以您可以插入变量并呈现它们的值。例如:

<?php
$mytitle = 'foo';
if (true) {
    echo "<h1>$mytitle</h1>";
}
?>

而在第二个示例中,您必须将 echo 包含在 php 块中:

<?php  if (true) {  ?>
    <h1><?php echo 'My Title'; ?></h1>
<?php  }  ?>

就个人而言,我使用与您的第二个示例相同的格式,a bit of a twist

<?php if (true): ?>
    <h1><?php echo $mytitle; ?></h1>
<?php endif; ?>

我发现它增加了可读性,尤其是当您有嵌套的控制语句时。

【讨论】:

  • 如果你不介意速记回声,我发现&lt;?=$mytitle?&gt; 更甜一些。
【解决方案2】:

在性能方面没有相关差异。但是您将无法在后者中使用变量,而且 IMO 看起来不太干净。对于大块,跟踪{} 结构也变得极其困难。

这就是存在以下替代符号的原因:

<?php if (true): ?>
<h1>Content Title</h1>
<?php endif; ?>

它的可读性略高。

【讨论】:

【解决方案3】:

这个:

<?php if (true) : ?>
    <h1>Content Title</h1>
<?php endif; ?>

这是应该使用 PHP 的方式。
不要echo HTML。这很乏味,尤其是因为您必须转义某些字符。

可能会有轻微的性能差异,以上可能更快。但这应该无关紧要。否则,没有区别。

【讨论】:

    【解决方案4】:

    感谢所有反馈。 :)

    我在使用这两种不同的方法时确实发现了一些问题。

    这里似乎没有任何真正的问题,只是格式在源代码上看起来很糟糕并且它的繁琐性质。

    <?php
    if (true) {
    echo "<h1>Content Title</h1>";
    }
    ?>
    

    以这种方式使用 php 可能会导致错误 警告:无法修改标头信息 - 标头已发送

    <?php  if (true) {  ?>
    <h1>Content Title</h1>
    <?php  }  ?>
    

    标题错误可以通过像这样使用php来解决

    <?php ob_start(); if (true) {  ?>
    <h1>Content Title</h1>
    <?php  }  ob_end_flush(); ?>
    

    至于为什么以及何时发送标头,我不完全确定...

    【讨论】:

    • @Col.:您本可以以一种不那么冒犯的方式发布相同的评论。下一次,为了各方的利益,请多花点力气。
    • 对于这篇文章中的冒犯之处,我很抱歉?你能告诉我,这样我就不会再犯那个错误了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2011-02-04
    相关资源
    最近更新 更多