这样的事情:
$vars = array("key" => "value", "key2" => "value2" //..etc);
function ($template, $vars) {
$file = file_get_contents($template);
foreach ($vars as $key => $value) {
str_replace($template //this is where I get confused);
}
}
想法是获取模板文件的内容(仅包含html),然后foreach将运行并替换vars数组中“key”的文本,文本是vars数组中的“value”字段。所以我可以说我的模板文件文本就像这个“{content}”。该函数应该找到该字符串(包括我知道的大括号,我没有在我的示例中指定它们)并将其替换为数组中的相应值。
我觉得我不太了解str_replace()函数。 PHP.net也没有多大帮助,因为我理解它是这样的:
str_replace($replacethese, $withthese, $inthisfile);
很简单,但是当我的数组是二维的时候我怎么能这样做?我的“$ replacethese”参数必须是$ vars数组的“关键”值。
答案 0 :(得分:2)
您可以使用array_keys()
和array_values()
来获取$vars
的键和值。试试这个:
$replace = array_keys($vars);
$with = array_values($vars);
$file = str_replace($replace, $with, $file);
修改强>
@E L说strtr()
更好:)。所以你可以尝试:
$file = strtr($file, $vars);
答案 1 :(得分:1)
你不需要foreach循环只需单个str_replace调用就可以完成这项任务:
str_replace(array_keys($vars), array_values($vars), $fileData);
答案 2 :(得分:0)
<?php
function ($template, $vars) {
$data = file_get_contents($template);
$data = str_replace(array_keys($vars), array_values($vars), $data);
file_put_contents($template, $data);
}