0

ドキュメントをテンプレート化しようとしています。ドキュメントを検索してまたは[%text%]に置き換えることにより、ドキュメントのセクションを動的テキストに置き換えたいと思います。を使用できることはわかっていますが、のすべてのインスタンスを検索して、の代わりにに置き換えたいと思います。を使ってみましたが、文句を言います。 $array['text']$textstr_replace("[%text%]", $array['text'], $page)[%(.*?)%]$array[$1]$1create_function($matches, $array)Missing argument 2 for {closure}()

$page = preg_replace('#\[%(.*?)%\]#is', $array["$1"], $page);
4

3 に答える 3

0

最初にpreg_matchを実行し、一致する名前を見つけます。次に、見つかったすべての名前を置き換えて配列を作成します。次に、配列を2番目の引数としてpreg_replaceを使用し、名前を配列の項目に置き換えます。

于 2012-06-14T14:18:19.057 に答える
0

あなたができるpreg_match_all('#[%(.*?)%]#is', $page, $matches);そしてそれから

if(count($matches == 2))
{
  $key = 0;
  foreach(array_unique($matches[0]) as $val)
  {
    if(isset($array[$key]))
    {
      $page = str_replace($val, $array[$key++], $page);
    }
    else
    {
      break; // more matches than array elements
    }
  }
}
于 2012-06-14T14:19:31.660 に答える
0

preg_replace_callbackでそれを行うことができます。

<?php
$page = preg_replace_callback('#\[%(.*?)%\]#is',
  function ($m){
    GLOBAL $array;
    return $array[$m[1]];
  }
, $page);
?>
于 2012-06-14T14:53:45.983 に答える