1

このようなもの:

$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 配列内の「キー」であるテキストが、vars 配列内の「値」フィールドであるテキストに置き換えられます。テンプレート ファイルのどこかに "{content}" のようなテキストがあるとします。関数は、その文字列 (私の例では指定しなかったことがわかっている中かっこを含む) を見つけ、それを配列内の対応する値に置き換える必要があります。

str_replace() 関数を十分に理解していないように感じます。PHP.netもあまり役に立ちません。私が理解しているように、次のようになります。

str_replace($replacethese, $withthese, $inthisfile);

簡単ですが、配列が 2 次元の場合、どのようにすればよいでしょうか? 私の「$replacethese」引数は、$vars 配列の「キー」値でなければなりません。

4

3 に答える 3

2

と を使用array_keys()array_values()て、 のキーと値を取得できます$vars。これを試して:

$replace = array_keys($vars);
$with = array_values($vars);
$file = str_replace($replace, $with, $file);

編集:

@ELはそれstrtr()が良いと言います:)。だからあなたは試すことができます:

$file = strtr($file, $vars);
于 2013-03-09T17:36:22.383 に答える
1

このような単一の str_replace 呼び出しだけで foreach ループは必要ありません。

str_replace(array_keys($vars), array_values($vars), $fileData);
于 2013-03-09T17:37:12.790 に答える
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);
}
于 2013-03-09T17:37:15.373 に答える