0

ここでいくつかの質問を見て、Google検索を行いましたが、これを行う正しい方法が見つからないようです.

この機能を使用しています

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_replaceto ...の戻り値を割り当てることはありませ$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 に答える