因此,对于我的毕业设计项目,我选择制作自己的模板引擎,而不是使用像雨或聪明的东西。现在我在params部分,但每次运行脚本时,它都没有实际解析变量......
看一下我的参数解析函数:
public function parseParameters()
{
if ( isset ( $this->parameter ) )
{
foreach ($this->parameter as $key => $value) {
str_replace( $this->content, '{' . $key . '}', $value );
}
}
if ( isset ( $this->langParameters ) )
{
foreach ($this->langParameters as $key => $value) {
str_replace( $this->content, '{$' . $key . '}', $value );
}
}
if ( isset ( $this->templateData ) )
{
foreach ($this->templateData as $key => $value) {
str_replace( $this->content, '{#' . $key . '}', $value );
}
}
echo $this->content;
}
我在旧的foreach loop
解决方案中选择了array_keys
。但它显然不起作用......
更多信息:
是的,$this->content
变量已定义。
这是我设置参数的方式:
public function createParameter( $key, $value )
{
$this->parameter[ $key ] = $value;
}
其他两种类型的参数完全相同,只有不同的名称。
如果您需要更多代码,请说明。
感谢。
答案 0 :(得分:0)
$ this->内容是什么?是要用"{$key}"
替换$value
的字符串?那应该是最后一个论点。 AND str_replace
函数仅返回替换的字符串,不会在第三个参数中更改。所以:
$this->content = str_replace('{' . $key . '}', $value, $this->content );
文档: PHP: str_replace
答案 1 :(得分:-1)
我使用类似的模板引擎,我遇到(一段时间)类似的问题......你确定要替换的值是字符串吗?如果没有把它们作为字符串。
if ( isset ( $this->parameter ) )
{
foreach ($this->parameter as $key => $value) {
str_replace('{' . $key . '}', (string)$value, $this->content);
}
}
希望它有所帮助!