PHP - 如何更改包含header.php的页面标题?

Joh*_*ton 11 php title

page.php文件:

<?php
include("header.php");
$title = "TITLE";
?>
Run Code Online (Sandbox Code Playgroud)

header.php文件:

<title><?php echo $title; ?></title>
Run Code Online (Sandbox Code Playgroud)

我希望我的标题在包括头文件之后设置.是否有可能做到这一点?我在php-fusion tvs上看过一些类似的东西:http://docs.php-fusion.it/temi:output_handling

we.*_*mat 33

扩展Dainis Abols答案,以及关于输出处理的问题,

考虑以下:

你的header.php标题标签设置为<title>%TITLE%</title>; "%"很重要,因为几乎没有人输入%TITLE%所以你以后可以使用它来表示str_replace().

那么,你可以像这样使用输出缓冲区

<?php
    ob_start();
    include("header.php");
    $buffer=ob_get_contents();
    ob_end_clean();

    $buffer=str_replace("%TITLE%","NEW TITLE",$buffer);
    echo $buffer;
?>
Run Code Online (Sandbox Code Playgroud)

那应该这样做.

编辑

我认为Guy的想法效果更好,因为如果你需要它会给你一个默认值,IE:

  • 标题是现在 <title>Backup Title</title>
  • 代码现在是:
<?php
    ob_start();
    include("header.php");
    $buffer=ob_get_contents();
    ob_end_clean();

    $title = "page title";
    $buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

    echo $buffer;
?>
Run Code Online (Sandbox Code Playgroud)

  • 是的,不.如果你每隔几天更改一个标题搜索引擎就不喜欢它,但每个页面都有一个不同的标题绝对是友好的. (2认同)

小智 11

1.在require函数之前添加$ title变量

<?php

$title = "Your title goes here";
require("header.php");

?>
Run Code Online (Sandbox Code Playgroud)

2.将以下代码添加到header.php中

<title><?php echo $title; ?></title>
Run Code Online (Sandbox Code Playgroud)


Peo*_*eon 9

您可以做的是,将输出存储在变量中,如:

header.php文件

<?php
   $output = '<html><title>%TITLE%</title><body>';
?>
Run Code Online (Sandbox Code Playgroud)

PS:您需要删除所有回声/打印等,以便将所有可能的输出存储在$output变量中.

这可以通过$output = '';在文件的开头定义然后查找/替换 echo来轻松完成$output .=.

然后将其替换%TITLE%为您需要的:

<?php
    include("header.php");
    $title = "TITLE";

    $output = str_replace('%TITLE%', $title, $output);
    echo $output;
?>
Run Code Online (Sandbox Code Playgroud)

另一种方法是javascript在代码中使用,而不是:

<title><?php echo $title; ?></title>
Run Code Online (Sandbox Code Playgroud)

把它放在那里:

<script type="text/javascript">
    document.title = "<?=$title;?>"
</script>
Run Code Online (Sandbox Code Playgroud)

或jQuery,如果你愿意:

<script type="text/javascript">
    $(document).ready(function() {
        $(this).attr("title", "<?=$title;?>");
    });
</script>
Run Code Online (Sandbox Code Playgroud)


Guy*_*Guy 7

在we.mamat的答案上稍微扩展一下,你可以使用preg_replace而不是简单的替换,并且完全不需要%title%.像这样的东西:

<?php
ob_start();
include("header.php");
$buffer=ob_get_contents();
ob_end_clean();

$title = "page title";
$buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

echo $buffer;
?>
Run Code Online (Sandbox Code Playgroud)