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


Is it okay to set title and meta description in php like this?

我正在网站的页面上动态设置页面标题和元描述http://jobfou.com,因为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>

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

是否可以,部分取决于你的具体情况。许多个月前,当我第一次开始学习PHP时,将整个输出缓冲到内存中进行输出后处理似乎很常见,但它的主要缺点是增加了内存消耗。

对于一个小网站来说,这不会是什么大事。你不会达到任何脚本内存限制(毕竟它只是文本,你需要减少输出负载才能做到这一点),而且你可能不会有那么多流量——释放内存和每个请求的内存取决于你的指标(事实上,如果你问这个问题,你可能甚至不会监控任何指标)。

第二个问题是你的例子特有的。你要求PHP做的是扫描该变量中的整个文本,寻找一个特定的字符串,然后替换它。这不是一个特别昂贵的操作,除非你的str_replace做了很多事情,但这不是实现你想要的最好、理想或可取的方式。

把PHP想象成一个str_replace函数。它在HTML输出之前运行/执行。因此,在将文本发送给用户之前,您可以使用PHP将文本放置在HTML中。既然我们可以做到这一点,我们就可以把PHP代码放在HTML中,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
}

现在我们有了一些可重复使用的代码,所以如果我们想更改主标题(即向每个页面添加facebookjavascript),我们可以在不编辑每个脚本的情况下完成。所以现在我们可以创建这样的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文件中的电子邮件内容中的标签)。

希望这个答案能帮助你!任何问题,我们都会在这里帮助