【问题标题】:How do I dynamically populate the <title> tag in a PHP page?如何在 PHP 页面中动态填充 <title> 标记?
【发布时间】:2009-07-21 02:03:46
【问题描述】:

我的代码如下:

index.php

<html>....  
    <title>My page</title>

....

<?php
    switch ($_GET['id']){  
        case "tips":  
            include("tips.php");  
            $title = "Tips";
...

如何获取 html title 标签的标题变量?

所有页面都经过index.php

【问题讨论】:

    标签: php html


    【解决方案1】:

    在输出 HTML 之前执行 PHP。

    <?php
    
      switch ($_GET["id"]) {
        case "tips":
          $title = "Tips";
          $page  = "tips.php";
      }
    
    ?>
    <html>
     <head>
      <title><?php print $title; ?></title>
     </head>
     <body>
      <?php include($page); ?>
     </body>
    </html>
    

    【讨论】:

    • 不,我从html头开始。 PHP 的第一行在 之后
    • @Johan,Johnathan 的回答是陈述,而不是问题。他指出了你应该做什么,不管你在做什么..
    • @Johan,在打印任何 HTML 之前总是执行这样的逻辑。这样,当您访问您的 HTML 时,它就不会被 PHP 弄得一团糟。注意我的 HTML 比你的干净得多,这是理想的。希望这会有所帮助。
    • 不要忘记 DOCTYPE 以防止怪癖模式!
    • @Peter,没错,但超出了本示例的范围:)
    【解决方案2】:

    您也可以通过输出缓冲和少量字符串替换来做到这一点。

    <?php ob_start('ob_process'); ?>
    <html>....  
        <title>{{{TITLE}}}</title>
    
    ....
    
    <?php
    
    switch ($_GET['id']){  
      case "tips":  
        include("tips.php");  
        $title = "Tips";
        break;
    }
    
    function ob_process($buffer) {
      global $title;
      $buffer = str_replace('{{{TITLE}}}', $title, $buffer);
      return $buffer;
    }
    

    【讨论】:

    • 全局变量?输出缓冲?这使情况过于复杂。
    • 这是一个选项。没有一个解决方案是理想的 - 他最好使用适当的框架或处理所有这些的东西。
    • 我的解决方案怎么不理想?我同意他应该使用框架,但如果他还没有能力,那么执行除标记之外的逻辑是理想的。还是我错过了什么?
    • 您的情况并不理想,因为当 PHP-Nuke 出现时,包括 PHP 文件的 switch 语句就消失了。它有效,但并不漂亮。
    • 顺便说一句,这个解决方案也将逻辑与标记分开。
    【解决方案3】:
    < title > <?php echo $title; ?> < /title >
    

    【讨论】:

    • $title 直到示例输出标题标签之后才被声明。您的回答部分正确,但在修复变量声明的年表方面缺少一些明确性。
    • 我认为他在使用前声明了:)
    • 不,那将是最好的事情,但不幸的是他没有这样做。他直到示例结束才声明它,但他想在开始时使用它。
    【解决方案4】:

    如果您不能使用 Ahmet KAKICI 建议的内容,请添加一个设置 document.title 的脚本标签

    <html>....  
        <title>My page</title>
    
    ....
    
    <?php
        switch ($_GET['id']){  
            case "tips":  
                include("tips.php");  
                $title = "Tips";
    ...
    ?>
    <script>top.document.title="<?php=$title?>"</script>
    

    我的 PHP 生锈了,只是想建议 document.title

    【讨论】:

    • 我认为在搜索引擎优化方面你会受到伤害。
    • 同意。这就是为什么它说“如果你不能使用 Ahmet KAKICI 的建议”!
    • @Jonathan Cool 你澄清了:))我确实认为你做到了。干杯。
    猜你喜欢
    • 2018-10-14
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多