修改 php include with ob_start 在进行额外编辑时不起作用

Modifying a php include with ob_start not working when extra edits are made

提问人:Ryflex 提问时间:8/2/2022 更新时间:8/2/2022 访问量:32

问:

我正在尝试通过PHP Includes修改一系列标头,并且在多次修改缓冲区时遇到问题。

我本质上是想让编辑包含的 js 和 css 文件变得非常容易,如果我们查看以下代码,这将成功地将 替换为版本号的查询字符串。?v=x

<?php
    function callback($buffer) {
      return (str_replace("?v=x", "?v=1.3", $buffer));
    }
    ob_start("callback");
    include 'includes/header-tags.php';
    ob_end_flush();
?>

该页面正在输出正确的链接,并应用了 1.3 版本。

我试图修改它,以便我可以通过以下代码在子文件夹中使用这些相同的标头,如您所见,我已经尝试通过替换每个实例来修复 css/js 文件夹的目录修复路径。="assets/="../assets/

<?php
    function callback($buffer) {
        $buffer = str_replace("?v=x", "?v=1.3", $buffer);
            
        // Directory Fix for Subfolders
        $subfolder_array = array("extra-pages", "test-pages", "new-pages", "custom");
        if (in_array(trim(basename(dirname(__FILE__))), $subfolder_array)) {    
            $buffer = str_replace('="assets/', '="../assets/', $buffer);
        }
      return $buffer;
    }
    ob_start("callback");
    include 'includes/header-tags.php';
    ob_end_flush();
?>

但是它没有输出任何 css/js 文件,包含基本上什么都不返回......

我敢肯定这是我错过或不理解的愚蠢事情,我将不胜感激。

谢谢

PHP 输出缓冲 ob-start

评论

0赞 Honk der Hase 8/2/2022
.js 或 .css 文件不是通过 PHP 发送的,Web 服务器直接提供它们。
0赞 CBroe 8/2/2022
使用相对于域根目录的 URL 来引用您的资产,方法是在它们前面加上斜杠 - 这样您就不需要再修复任何关于不同级别的路径深度的内容。

答: 暂无答案