【问题标题】:Manipulate HTML page via PHP通过 PHP 操作 HTML 页面
【发布时间】:2014-07-19 08:11:04
【问题描述】:

您好,我在 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 的头部添加一些内容。

【问题讨论】:

  • 你的问题不清楚
  • 我会问显而易见的。为什么不能直接将包含移到头部?
  • 所以,创建一个新的包含文件并包含它。
  • 为什么不能移动它?这似乎是您试图解决的结构性问题
  • 40000 个页面需要更新?所需的更改是否足够一致,以至于您可以编写脚本(例如,在 Perl 中)来自动更新?而且您还没有解释为什么您不能只更新 script.php 而不是访问 PHP 源代码。你只是在 script.php 中定义 Javascript 函数,还是在做一些其他的事情?

标签: php head inject


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你可以这样做:

    • 把 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;
    ?>
    

    但请注意.. 这不是要走的路。它可能会减慢您的页面速度。它不是一种干净的编码方式,实际上是在欺骗。如果可能,您应该重新考虑以不需要的方式重构您的代码。

    【讨论】:

    • 我现在就试试。像这样的东西是我需要的。我可以预先和附加,所以我可以试试 :)
    【解决方案3】:

    没有直接的方法可以做到这一点。不过,我可以为您的问题考虑 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 之后放置样式标签,它们仍然可以工作。不过我不会这样做,因为这是坏习惯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2020-02-19
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多