【问题标题】:Global variables in interspire交互中的全局变量
【发布时间】:2012-09-28 01:23:53
【问题描述】:

首先我想为可能的错误道歉,英语不是我的母语。我工作的公司强迫我在我们的许多网站上安装 interspire 购物车,这没关系,我对它非常熟悉,但有一件事我无法理解(我无法阅读每个文件来找到答案,所以我问如果有人已经知道)是他们的全局变量(占位符)如何工作。如果 php 文件中的全局变量名为 $GLOBALS['sample'],则在 html 文件中调用它就足以编写这个 - %%GLOBAL_sample%%。我有一些想法,比如将函数与 strreplace 一起使用,该函数会转到包含的 html 并用它们的 php 内容替换变量。但是它们如何使脚本编辑 html 文件?那么有人知道他们是怎么做到的吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    我在自己的代码中做了类似的事情,我这样做的方式是这样的:

    ob_start(function($data) {
        $data = str_replace("%KEYWORD%","replacement",$data);
        return $data;
    });
    

    我把它放在我的代码的开头。显然,关键字越多越有用,当然您可以循环访问全局变量并查找与它们匹配的任何内容,因此此代码可以进行很多修改。这就是我要做这样的事情的方式。

    编辑:我刚刚遇到了一种使用关联数组进行替换的简洁方法。

    ob_start(function($data) {
        return preg_replace_callback(
            "(%([^% ]+)%)",
            function($m) {
                static $reps = Array(
                    "sample" => "replacement",
                    "test" => "successful",
                    "message" => "Hello"
                ); // define your keywords here
                if( isset($reps[$m[1]])) return $reps[$m[1]];
                return $m[0];
            },
            $data);
    });
    

    示例输入:

    %消息%。此示例将测试 %sample% 并希望是 %test%。

    输出:

    你好。此示例将测试替换并希望成功。

    【讨论】:

    • 感谢您的回答。我在想类似的事情。但我无法弄清楚这一点 - 好吧,你制作的脚本替换了某些文本中的 %%variables%% 。但是如何从 html 文件中获取它们呢?我的意思是,如果您在 php 中包含 *.html 文件并且它不包含 php 标签,则解析器将以纯文本形式显示所有内容。那么如何索引要替换的占位符呢?
    • 编辑:我想我明白了 - $var = file_get_contents('test.html'); $rep = str_replace("GLOBAL", "something", $var);
    • 添加了处理替换的更好方法。请参阅答案中的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2013-10-06
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多