如何附加代码以使用PHP?

时间:2014-01-14 12:41:08

标签: php html append head

我有一个小小的网页项目,其中所有网页都有一个他们在实际网页内容之前导入的公共头文件。头文件类似于以下内容:

<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>

然后所有网页都有<?php include("header.php"); ?>,因此他们会在开头加载<head>代码。

我现在正在编写一个新页面,其中还包含之前的header.php,但它需要加载第二个javascript。我可以使用页面中间的<script>标记加载它而不会出现问题,但我想知道是否可以将其直接附加到<head>标记,而不是放在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,但我想知道我是否可以在不使用任何其他外部源的情况下实现此目的。

2 个答案:

答案 0 :(得分:3)

您可以像这样包含 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的内容提供给缓冲区,而不是在</head>新脚本包括之前添加,并将这个新内容打印到浏览器。

答案 1 :(得分:0)

我们为此做的是将我们的绘图放入一个类,然后让该类完成所有输出。所以你可以写一个这样的类,并调用一个方法来向标题中添加内容。然后它将立即获得输出。这里有一些伪代码可以帮你推动这个方向。这样,您的包含可以调用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';
    }
}