通过PHP操作HTML页面

时间:2014-05-29 17:56:53

标签: php head inject

您好我在HTML页面的末尾包含了一个PHP文件。现在我想在标签HEAD结束之前添加一个样式文件。但我需要通过这个php文件来做到这一点,我别无选择。

我有index.php个文件,在此文件的末尾我正在加载script.php 我需要使用script.php

在索引页面的标题中添加一个脚本

文件夹结构:

  • 的index.php
  • 的script.php

index.php文件包含以下代码:

<!DOCTYPE html>

<html>
 something
</head>

<body>
   something
</body>
</html>
<?php 
   include "script.php"
?>

当我在页面末尾有script.php文件时,如何将某些东西放在HTML / PHP的头部。

3 个答案:

答案 0 :(得分:1)

没有直接的方法可以做到这一点。我可以为你的问题考虑2个令人讨厌的解决方法:

  1. 如果脚本激活了缓冲(在HEAD关闭之前将其称为ob_start),您可以将其作为字符串获取并使用ob_get_clean清除它,然后再插入代码并再次进行ECHO。可能看起来像这样:

    <?php
    $output = ob_get_clean();
    $output = substr_replace($output, $your_code, strpos($output, '</head>'), 0);
    echo $output;
    ?>
    
  2. 由于现代浏览器非常宽容,你实际上可以在结束html之后放置样式标签,它们仍然有效。我不会这样做,因为这是一个坏习惯

答案 1 :(得分:0)

在包含的PHP页面中创建IF逻辑,然后将其包含在HEAD和HTML的末尾。

在HTML中,在HEAD的包含之前设置变量,然后在HEAD的包含之后重置相同的变量。

关于IF逻辑,将其设置为TRUE只运行样式表,FALSE跳过样式表并运行PHP脚本的其余部分。

答案 2 :(得分:0)

你能做的是:

  • 把ob_start();在您的页面或所有页面的开头..(我希望你这是可能的)
  • 使用ob_get_contents();将所有内容都放入变量中:
  • 使用替换
  • 注入您的代码
  • 使用ob_end_clean()
  • 清理输出缓冲区
  • 回显修改后的代码。

所以这段代码看起来像这样:

<?php ob_start();
//a lot of your code and html here
$codeToInject="yourcode";
$content=ob_get_contents();
$content=str_replace("</head>",$codeToInject."</head>");
ob_end_clean();
echo $content;
?>

但要注意......这不是要走的路。它可能会降低您的网页速度。它不是一种干净的编码方式,实际上是它的诡计。如果可能的话,你应该以不需要的方式协调重构你的代码。