現在、次のような状況になっています。テキストを「解析」してプレースホルダーを探し(表記は「{...}」)、後で実際のテキストに置き換えます。
正規表現について考えました
$foo = "Hello World {foo{bar}} World Hello!";
$bar = array();
preg_match_all('@\{.+\}@U', $foo, $bar);
var_dump($bar);
しかし、これは戻ります
array(1) { [0]=> array(1) { [0]=> string(9) "{foo{bar}" } }
貪欲にすると、次のようになります。
array(1) { [0]=> array(1) { [0]=> string(10) "{foo{bar}}" } }
しかし、私は結果が次のようになることを望んでいます:
array(1) { [0]=> array(2) { [0]=> string(5) "{bar}" [1]=> string(10) "{foo{bar}}" } }
preg_match(_all)と正規表現を使用してこれに到達する方法はありますか?
または、結果セットにサブステートメントがなくなるまで、$ barを何度もループする必要がありますか?