我遇到了一个奇怪的问题。我有以下代码:
$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}。我换了两条str_replace
线,得到了不同的结果—— {foo} 被替换了,但 {bar} 没有!我也试过换掉它preg_replace
,没有任何改变。作为记录,该$template->loadTemplate()
函数对加载的字符串不执行任何操作,它只是从文件中获取模板。
我的问题是:为什么 PHP 会以这种方式运行,其次,我该如何克服这个限制/错误?