是否可以,部分是自以为是,部分是由于你的具体情况。当我第一次开始学习PHP之前,现在将整个输出缓存到内存中用于后期输出处理似乎很常见,但它存在增加内存消耗的主要缺陷。
对于一个小网站来说,这不会是一件大事。你不会碰到任何脚本内存限制(毕竟它是唯一的文本,你需要一个输出的负载来做到这一点),并且你可能不会有那么多的流量来释放每个请求的内存和内存指标(事实上,如果你问这个问题,你甚至可能不会监测任何指标)。
第二个问题特别针对你的例子。你要求PHP做什么,是扫描该变量中保存的全部文本,寻找特定的字符串,然后将其替换。这不是一个特别昂贵的操作,除非你的东西很少,但它不是实现你想要的最好,最理想也不可取的方法。
认为PHP很像str_replace
函数。它会在输出HTML之前运行/执行。因此,您可以使用PHP将文本放入HTML中,然后发送给用户。由于我们可以做到这一点,我们可以将PHP代码放入我们的HTML中,该代码将运行,并且在大多数情况下会打印一些HTML /文本。
因此,让我们看看你的榜样......
除了插入“标签”到HTML的更换,我们可以直接把一些PHP到HTML
<?php
$title = "My first website";
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
Some stuff here...
</body>
</html>
而且它不” t只需要在HTML内部有一个简单的回声(不要忘记标签,因此PHP解释器知道它需要做某些事情)。我们可以做一些更看中我们的标题标签...
<html>
<head>
<title>
<?php
if($_SERVER['PHP_SELF'] == 'index.php') {
echo 'My Website :: Homepage';
} else {
$pagename = array_shift(explode('.', $_SERVER['PHP_SELF']));
echo 'My Website :: '.$pagename;
}
?>
</title>
</head>
<body>
Some stuff here...
</body>
</html>
这里有一个不同的方式,你可以做使用功能。让我们创建一个名为template_functions.php
的文件。
function header($title = 'Some default title', $meta_kw = '', $meta_descr = '')
{
?>
<html>
<head>
<title><?php echo $title; ?></title>
<meta name="keywords" content="<?php echo $meta_kw; ?>" />
<meta name="description" content="<?php echo $meta_descr; ?>" />
</head>
<body>
<?php
}
function footer() {
?>
<div id="copyright">Copyright MyWebsite <?php echo date("Y"); ?></div>
</body>
</html>
<?php
}
现在我们有一点可重用的代码,所以如果我们想改变的主头(即新增Facebook JavaScript来每一页),我们可以做到这一点,而无需编辑每一个脚本。所以,现在我们可以创建一个index.php
这样的:
<?php
require_once("template_functions.php");
header("My Homepage", "Some keywords", "Some description");
?>
Enter site content here
<?php
footer();
?>
和contact.php
页面这样
<?php
require_once("template_functions.php");
header("Contact US", "Some keywords", "Some description");
?>
Enter Your contact info, social network info, a map or a contact form here if you want!
<?php
footer();
?>
这样应该可以告诉你必须开始与HTML混合PHP,甚至有功能的好处它允许你重新使用一些代码。模板化可以变得复杂得多,但我不想打击你的想法。从小开始......
为了最终确定我很长的答案,让我们以不同的方式解决这个问题。在HTML中使用标签并处理它们是错误的吗?答案是NO。你必须决定什么适合你和你的情况。有时候这是不可避免的,有时候这只是一种更好的做事方式。然而,当你确实需要这样的事情时,你通常会发现它的文本规模小得多(例如用户评论的bbcode解析器,或者替换保存在某个txt文件中的电子邮件内容中的标签)。
希望这个答案可以帮助你!任何问题我们在这里帮助
使用自己的模板更好 – Davit
执行您的PHP代码,在输出您的HTML之前收集必要的数据 - http://en.wikipedia.org/wiki/IPO_Model – CBroe
Use of Own模板,Pls Dachi可以详细说明吗? –