我是一个相当有经验的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源代码中的缩进。这是大多数人这样做的方式吗?
答案 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块以外的方法,有些像其他人一样回答。
另外,不要忘记快捷方式。