是否可以,部分是固执己见,部分取决于您的具体情况。很多个月前我第一次开始学习 PHP 时,将整个输出缓冲到内存中以进行后期输出处理似乎很常见,但它的主要缺陷是它增加了内存消耗。
对于一个小型网站,这不会是什么大不了的。你不会达到任何脚本内存限制(毕竟它只是文本,你需要大量的输出来做到这一点),而且你可能不会有那么多的流量来释放内存和每个请求的内存在你的指标(事实上,如果你问这个问题,你可能甚至不会监控任何指标)。
第二个问题是您的示例所特有的。您要求 PHP 做的是扫描该变量中保存的整个文本,查找特定字符串然后替换它。这不是一项特别昂贵的操作,除非您str_replace
做了一些很好的事情,但这不是实现您想要的最佳、理想或可取的方式。
把 PHP 想象成一个str_replace
函数。它在您的 HTML 输出之前运行/执行。因此,您可以在将文本发送给用户之前,使用 PHP 在 HTML 中放置文本。由于我们可以做到这一点,我们可以将 PHP 代码放入我们的 HTML 中,这将运行并在大多数情况下打印一些 HTML/文本。
所以让我们看看你的例子......
我们可以将一些 PHP 直接放入 HTML 中,而不是在要替换的 HTML 中插入“标签”
<?php
$title = "My first website";
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
Some stuff here...
</body>
</html>
而且它不仅是 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();
?>
这应该有希望表明您必须开始将 PHP 与 HTML 混合,甚至还有额外的功能允许您重用代码位。模板可能比这复杂得多,但我不想让你大吃一惊。从小处着手...
为了最终确定我很长的答案,让我们以不同的方式解决这个问题。在 HTML 中使用标签并处理它们是错误的吗?答案是否定的。您必须决定什么对您和您的情况有效。有时这是不可避免的,有时这只是一种更好的做事方式。但是,您通常会发现,当您确实需要这种东西时,它的文本规模要小得多(即用于用户评论的 bbcode 解析器,或者替换保存在某个 txt 文件中的电子邮件内容中的标签)。
希望这个答案能帮到你!有任何问题,我们随时为您提供帮助