私は奇妙な問題に遭遇しています。次のコードがあります。
$foo = array(
"some" => array(
"foo" => "boohoo",
"bar" => "foobar"
),
"really" => array(
"foo" => "boohoo",
"bar" => "barfoo"
),
"strange" => array(
"foo" => "boohoo",
"bar" => "foobarfoo"
),
"occurences" => array(
"foo" => "boohoo",
"bar" => "barbaz"
)
);
$page = "";
foreach($foo as $bar)
{
$subj = $template->loadTemplate('foobar', true);
$str = "";
$str = str_replace("{foo}", $bar['foo'], $subj);
$str = str_replace("{bar}", $bar['bar'], $subj);
$page .= $str;
}
ここでの問題は、PHP コードを実行すると、テンプレート内の {bar} が置き換えられますが、{foo} は置き換えられません。2 つの行を入れ替えたstr_replace
ところ、別の結果が得られました。{foo} は置き換えられますが、{bar} は置き換えられません! 私も交換してみましたがpreg_replace
、何も変わりませんでした。記録のために、$template->loadTemplate()
関数はロードされた文字列に対して操作を実行せず、ファイルからテンプレートを取得するだけです。
私の質問は、PHP がこのように動作する理由と、この制限/バグを克服するにはどうすればよいかということです。