在PHP中回显HTML的最佳方法

时间:2010-02-27 15:39:57

标签: php echo

我是一个相当有经验的PHP编码器,我只是想知道回复大块HTML代码的最佳方法是什么(最佳实践)。

这样做会更好:

<?php
echo "<head>
<title>title</title>
<style></style>
</head>";
?>

或者这个:

<?php
define("rn","\r\n");
echo "<head>".rn
."<title>title</title>".rn
."<style></style".rn
."</head>".rn;
?>

我倾向于使用第二个,因为它不会搞砸PHP源代码中的缩进。这是大多数人这样做的方式吗?

9 个答案:

答案 0 :(得分:19)

IMO,最好的方法通常是将HTML单独存储在模板文件中。这是一个通常包含HTML的文件,其中包含一些需要填写的字段。然后,您可以根据需要使用一些模板框架安全地填写html文档中的字段。

Smarty是一个流行的框架,这是一个如何运作的例子(取自Smarty的速成课程)。

模板文件

<html>
<head>
<title>User Info</title>
</head>
<body>

User Information:<p>

Name: {$name}<br>
Address: {$address}<br>

</body>
</html>

插入名称和插件的Php代码地址到模板文件:

include('Smarty.class.php');

// create object
$smarty = new Smarty;

// assign some content. This would typically come from
// a database or other source, but we'll use static
// values for the purpose of this example.
$smarty->assign('name', 'george smith');
$smarty->assign('address', '45th & Harris');

// display it
$smarty->display('index.tpl');

除了Smarty之外,还有数十种合理的模板选择可供选择,以满足您的口味。有些很简单,很多都有一些相当复杂的功能。

答案 1 :(得分:14)

您也可以将HTML放在PHP代码块之外:

<?php
    // PHP code
?>
<head>
<title>title</title>
<style></style>
</head>
<?php
    // further PHP code
?>

答案 2 :(得分:10)

别忘了你也可以访问HEREDOC(http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

echo <<< HERE
<head>
   <title>title</title>
   <style></style>
</head>
HERE;

此外,我会研究类似Smarty模板的东西 - 更重要的是MVC设计模式,它强制将标记与业务逻辑分开。

答案 3 :(得分:4)

用户heredoc语法

echo <<<NO_MORE

<head>
<title>title</title>
<style></style>
</head>

NO_MORE;

或直接从php输出html ?> ... <?php

中逃脱

答案 4 :(得分:3)

我认为两者都不是最好的解决方案。回应html的可读性不高。我总是将html放在php标签之外。通过这种方式,您可以获得缩进,并且它也更具可读性。

这样的事情:

?>
<head>
    <title>title</title>
    <style></style>
</head>
<?php

如果你想进一步发展,你可以使用模板系统真正地将逻辑与演示文稿分开。

答案 5 :(得分:3)

由于已经有足够的替代方案,我只是评论你的第二种方法。如果你想用echo做,最好使用:

echo "<head>", PHP_EOL,
     "<title>title</title>", PHP_EOL
     "<style></style", PHP_EOL
     "</head>", PHP_EOL;

使用PHP_EOL而不是自定义常量不会使全局范围丢失多余的常量,也会使换行符独立于操作系统,因为它将使用为PHP运行的操作系统定义的内容。

使用逗号而不是连接可以节省一些内存,因为PHP根本不需要连接,而只是刷新你在echo时抛出的内容。

答案 6 :(得分:1)

这对我来说很好!

 <?php
     echo '
          <!DOCTYPE HTML>
          <html lang="en-US">
          <head>
              <meta charset="utf-8" />
              <link rel="stylesheet" type="text/css" href="styles.css" />
              <script type="text/javascript" src="js/jquery.js"></script>
              <script type="text/javascript" src="js/java.js"></script>
          </head>    
          <body>
              <div id="wrap">
                  <div id="main_home"></div>
                  <div id="nav_circle"></div>
                  <input type="text" id="search_text" value="Your search starts here">
              </div>
          </body>
          </html>
    ';
?>

您可以在PHP中回显大量这样的HTML代码。 你必须确定这不是'内部HTML。替换为“它将继续!!

答案 7 :(得分:0)

第一种形式更有效率,因为它不执行字符串连接(.)。

答案 8 :(得分:0)

如果您使用引号显示HTML,请使用单引号',因为PHP会将变量搜索到双引号中,这样更不希望显示静态字符串。

对我来说,最好的方法仍然是PHP块以外的方法,有些像其他人一样回答。

另外,不要忘记快捷方式。