在php中这样设置标题和元描述可以吗?

在php中这样设置标题和元描述可以吗?,php,html,Php,Html,我在我的站点的页面上动态设置页面标题和元描述,因为http是无状态的,如下所示 <html> <?php ob_start(); ?> <title> <!--TITLE--> </title> <body> Some HTML Page Content From Database Goes Here. <?php //The PHP Code Here Gets executed on each page load

我在我的站点的页面上动态设置页面标题和元描述,因为http是无状态的,如下所示

<html>
<?php
ob_start();
?>
<title> <!--TITLE--> </title>
<body>
Some HTML Page Content From Database Goes Here.

<?php
//The PHP Code Here Gets executed on each page loads, dynamically.
$wholePageContents = ob_get_contents();
$post_title = "Page 1";
ob_end_clean();
echo str_replace("<!--TITLE-->", $post_title, $wholePageContents);
?>

</body>
<html>

数据库中的一些HTML页面内容位于此处。

可以这样设置页面标题和元描述吗,调用ob_start();在每次页面加载中,优点和缺点是什么,或者我应该使用jquery。哪一个更好,并且不消耗内存。

它是否正常,一部分是因为你固执己见,另一部分是因为你的具体情况。当我在几个月前第一次开始学习PHP时,将整个输出缓冲到内存中进行输出后处理似乎很常见,但它有一个主要缺陷,那就是它会增加内存消耗

对于一个小网站来说,这不是什么大问题。您不会达到任何脚本内存限制(毕竟这是唯一的文本,您需要一个输出负载来实现这一点),并且您可能不会有太多的流量,释放内存和每个请求的内存都在您的指标上(事实上,如果您问这个问题,您甚至可能不会监控任何指标)

第二个问题是您的示例所特有的。您要求PHP做的是扫描该变量中保存的整个文本,查找特定字符串,然后替换它。这不是一个特别昂贵的操作,除非你的
str\u替换了一些好东西,但这不是实现你想要的最好、理想或可取的方法

把PHP想象成一个
str\u replace
函数。它在输出HTML之前运行/执行。因此,在将文本发送给用户之前,可以使用PHP将文本放入HTML中。因为我们可以做到这一点,我们可以将PHP代码放入HTML中,在大多数情况下,HTML将运行并打印一些HTML/文本

让我们看看你的例子

我们不需要在HTML中插入要替换的“标记”,而是可以直接在HTML中插入一些PHP

<?php
$title = "My first website";
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
Some stuff here...
</body>
</html>
现在我们有了一些可重用的代码,因此,如果我们想更改主标题(即将facebook javascript添加到每个页面),我们可以在不编辑每个脚本的情况下进行更改。现在我们可以创建一个
index.php
,如下所示:

<?php
require_once("template_functions.php");

header("My Homepage", "Some keywords", "Some description");
?>
Enter site content here
<?php
footer();
?>
这应该很有希望地表明,您必须开始将PHP与HTML混合使用,甚至还要增加一些函数,这些函数允许您重用代码。模板制作可能比这复杂得多,但我不想让你大吃一惊。从小事做起

最后,让我们用不同的方式来回答这个问题。在HTML中使用标记并处理它们是错误的吗?答案是否定的。你必须决定什么适合你和你的处境。有时这是不可避免的,有时这只是一种更好的做事方式。然而,您通常会发现,当您确实需要这类内容时,它的文本规模要小得多(例如,用户评论的bbcode解析器,或者替换保存在txt文件某处的电子邮件内容中的标记)


希望这个答案能帮到你!我们在这里想帮助大家了解的任何问题,一部分是自以为是,另一部分是你的具体情况。当我在几个月前第一次开始学习PHP时,将整个输出缓冲到内存中进行输出后处理似乎很常见,但它有一个主要缺陷,那就是它会增加内存消耗

对于一个小网站来说,这不是什么大问题。您不会达到任何脚本内存限制(毕竟这是唯一的文本,您需要一个输出负载来实现这一点),并且您可能不会有太多的流量,释放内存和每个请求的内存都在您的指标上(事实上,如果您问这个问题,您甚至可能不会监控任何指标)

第二个问题是您的示例所特有的。您要求PHP做的是扫描该变量中保存的整个文本,查找特定字符串,然后替换它。这不是一个特别昂贵的操作,除非你的
str\u替换了一些好东西,但这不是实现你想要的最好、理想或可取的方法

把PHP想象成一个
str\u replace
函数。它在输出HTML之前运行/执行。因此,在将文本发送给用户之前,可以使用PHP将文本放入HTML中。因为我们可以做到这一点,我们可以将PHP代码放入HTML中,在大多数情况下,HTML将运行并打印一些HTML/文本

让我们看看你的例子

我们不需要在HTML中插入要替换的“标记”,而是可以直接在HTML中插入一些PHP

<?php
$title = "My first website";
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
Some stuff here...
</body>
</html>
现在我们有了一些可重用的代码,因此,如果我们想更改主标题(即将facebook javascript添加到每个页面),我们可以在不编辑每个脚本的情况下进行更改。现在我们可以创建一个
index.php
,如下所示:

<?php
require_once("template_functions.php");

header("My Homepage", "Some keywords", "Some description");
?>
Enter site content here
<?php
footer();
?>
这应该很有希望地表明,您必须开始将PHP与HTML混合使用,甚至还要增加一些函数,这些函数允许您重用代码。模板制作可能比这复杂得多,但我不想让你大吃一惊。从小事做起

最后,让我们用不同的方式来回答这个问题。在HTML中使用标记并处理它们是错误的吗?答案是否定的。你必须决定什么适合你和你的处境。有时这是不可避免的,有时这只是一种更好的做事方式。然而,您通常会发现,当您确实需要这类内容时,它的文本规模要小得多(例如,用户评论的bbcode解析器,或者替换保存在txt文件某处的电子邮件内容中的标记)


希望这个答案能帮到你!我们在这里要帮助的任何问题

使用自己的模板更好地执行PHP代码,在输出HTML之前收集必要的数据–使用自己的模板,请详细说明?@samsonade我的意思是,您可以将HTML和PHP逻辑彼此分离。这是你在掌握了php技能并进入MVC后一定要做的事情。主干线很酷
<?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();
?>