如何用str_replace替换文件中的文本?

时间:2013-03-09 17:30:52

标签: php arrays foreach str-replace

这样的事情:

$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数组的“关键”值。

3 个答案:

答案 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);
}