我在这里看了几个问题,并在谷歌上搜索了一下,但我似乎找不到正确的方法来做到这一点。
我正在使用这个函数
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
但我认为我并不完全了解它是如何工作的,并且只产生了错误,我是否必须走回调路线,或者我只是在当前函数中缺少某些内容?
Kira,
preg_Replace函数返回替换的字符串。您发布到其中的$content主题不会作为参考进行更新。因此,请尝试将代码更改为;
$content = preg_replace("/".$replace['triggers']."/i",$replace['php'], $content);
您永远不会将 preg_replace
的返回值分配给$content
....你需要的是这个:
$content = preg_replace("/".$replace['triggers']."/i",$replace['php'], $content);
您需要将替换的内容存储回变量。
$content = preg_replace(...);
另外,您确定str_replace()
还不够吗?