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

时间:2013-08-31 23:34:25

标签: php html

我正在我的网站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。哪个更好,不消耗内存。

1 个答案:

答案 0 :(得分:4)

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

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

第二个问题特别针对您的示例。你要求PHP做的是扫描该变量中的整个文本,查找特定字符串然后替换它。这不是特别昂贵的操作,除非你{{1}做了一些好事,但它不是最好的,理想的,也不是实现你想要的方法。

将PHP视为str_replace函数。它在输出HTML之前运行/执行。因此,在将文本发送给用户之前,您可以使用PHP在HTML中放置文本。由于我们可以这样做,我们可以将PHP代码放在我们的HTML中,这些代码将被运行并且在大多数情况下会打印一些HTML /文本。

那么让我们来看看你的例子......

我们可以将一些PHP直接放入HTML

,而不是将“标签”插入HTML中进行替换
str_replace

它不仅仅是HTML中的一个简单回显(不要忘记标记,因此PHP解释器知道它需要做一些事情)。我们可以在标题标签中做一些更有趣的事情......

<?php
$title = "My first website";
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
Some stuff here...
</body>
</html>

这是使用函数的不同方法。让我们创建一个名为<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

现在我们有一些可重复使用的代码,所以如果我们想要更改主标题(即将facebook javascript添加到每个页面),我们可以在不编辑每个脚本的情况下完成。现在我们可以像这样创建一个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 }

index.php

<?php require_once("template_functions.php"); header("My Homepage", "Some keywords", "Some description"); ?> Enter site content here <?php footer(); ?> 这样的页面

contact.php

这应该有希望表明你必须开始将PHP与HTML混合,甚至还有额外的功能,可以让你重复使用一些代码。模仿可以变得复杂得多,但我不想打扰你的想法。从小处开始......

为了最终确定我的答案,让我们以不同的方式解决问题。在HTML中使用标签并处理它们是错误的吗?答案是否定的。你必须决定什么对你和你的情况有用。有时这是不可避免的,有时它只是一种更好的做事方式。但是你通常会发现当你需要这种东西时,它的文本规模要小得多(即用户评论的bbcode解析器,或者替换保存在txt文件中的电子邮件内容中的标签)。

希望这个答案可以帮到你!我们在这里提出任何问题