0

我在这里查看了几个问题,并进行了谷歌搜索,但我似乎找不到正确的方法来执行此操作。

我正在使用这个功能

function replace_c($content){
    global $db;
    $replacements = $db->query("SELECT * FROM `replacements`");
    while($replace = $replacements->fetch_assoc()){
        preg_replace("/".$replace['triggers']."/i",$replace['php'], $content);
    }
    return $content;
}

这是我对函数的调用

$contents = replace_c(file_get_contents("templates/" . $settings['theme'] . "/header.html"));

它不会给出错误,只是不会像应有的那样替换文本,所以我不确定该功能是否真的有效。我确实尝试preg_replace_callback过,但我认为我没有完全理解它是如何工作的,并且除了错误之外什么也没产生,我是否必须走回调路线,或者我只是在我当前的函数中遗漏了一些东西?

4

3 回答 3

2

您永远不会将返回值分配preg_replace$content...。您需要的是:

$content = preg_replace("/".$replace['triggers']."/i",$replace['php'], $content);
于 2013-02-03T11:45:57.187 回答
2

基拉,

preg_Replace 函数返回被替换的字符串。您发布给它的 $content 主题不会作为参考更新。所以尝试将代码更改为;

$content = preg_replace("/".$replace['triggers']."/i",$replace['php'], $content);
于 2013-02-03T11:46:29.720 回答
1

您需要将替换的内容存储回一个变量。

$content = preg_replace(...);

另外,你确定一个str_replace()还不够吗?

于 2013-02-03T11:46:13.250 回答