【问题标题】:How can I append a code to <head> using PHP?如何使用 PHP 将代码附加到 <head>?
【发布时间】:2014-02-02 12:40:44
【问题描述】:

我有一个小型网络项目,其中所有页面都有一个公共头文件,它们在实际页面内容之前导入。头文件是这样的:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <script type="text/javascript" src="js/some_script.js"></script>
    <link rel="shortcut icon" href="images/web.ico" />
</head>

那么所有页面都有一个&lt;?php include("header.php"); ?&gt;,所以它们在开头加载了&lt;head&gt;标签。

我现在正在编写一个新页面,其中还包括以前的header.php,但它需要第二个 javascript 才能加载。我可以使用页面中间的&lt;script&gt; 标签加载它而不会出现问题,但我想知道是否可以将它直接附加到&lt;head&gt; 标签,而不是停留在html代码的中间。

实际代码如下所示:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link rel="stylesheet" type="text/css" href="css/style.css" />
        <script type="text/javascript" src="js/some_script.js"></script>
        <link rel="shortcut icon" href="images/web.ico" />
    </head>
    <body>
        <p>Some text here</p>
        <script type="text/javascript" src="js/another_script.js"></script>
        <p>Some more text</p>
    </body>
</html>

我想知道如何实现以下目标:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link rel="stylesheet" type="text/css" href="css/style.css" />
        <script type="text/javascript" src="js/some_script.js"></script>
        <link rel="shortcut icon" href="images/web.ico" />
        <script type="text/javascript" src="js/another_script.js"></script>
    </head>
    <body>
        <p>Some text here</p>
        <p>Some more text</p>
    </body>
</html>

我知道这可以使用例如jQuerySimple HTML DOM,但我想知道是否可以在不使用任何其他外部资源的情况下实现这一目标。

【问题讨论】:

  • 一种解决方案是更改header.php 文件,并使用if (page === "blah.php" 之类的内容,然后包含another_script.js。如果只有几个页面需要不同的脚本,因为逻辑可能会很长。
  • 我认为对于一个小项目(就像我正在做的那样),这是最简单的解决方案。 @NickR,您能否将这个想法扩展为可能的答案?

标签: php html append head


【解决方案1】:

您可以像这样包含 header.php

<?php 

ob_start();
include("header.php"); 
$contents = ob_get_contents();
ob_end_clean();

echo str_replace('</head>', '<script type="text/javascript" src="js/another_script.js"></script></head>', $contents)

?>

代码很简单。您将 header.php 的内容添加到缓冲区,而不是添加之前的 &lt;/head&gt; 新脚本包含并将此新内容打印到浏览器。

【讨论】:

  • 这是你需要的吗?
  • 如何从另一个包含的文件中调用该 str_replace?如果我在那里调用它,头部会附加在身体的中间。是否可以在身体之前将其添加到头部?
  • @m1crdy 很难理解您要做什么。我认为您应该创建一个新问题,对您的问题进行更多描述
【解决方案2】:

我们为此做的是将我们的绘图放入一个类中,然后让该类完成所有输出。因此,您可以编写一个这样的类并调用一个方法来将内容添加到标题中。然后它会立即得到输出。这里有一些伪代码可以让你朝着这个方向前进。这样,您的 include 可以调用 addHeader 函数并在移动到输出之前添加您需要的任何额外文件。换句话说,这本质上是您的视图的控制器。

class Draw {
    protected headers = array();

    public function addHeader($header) {
         $this->headers[] = $header;
    }

    public function drawPage($page) {
        $headers = $this->headers;
        include 'top.php';
        include $page . '.php';
        include 'bottom.php';
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多