文字列を調べて、パターンのすべての出現を見つける機能が必要です。パターンの出現回数がわかっている場合、これは preg_match で簡単に実行できますが、出現回数がわからない場合にこれを機能させる方法がわかりません。
既知の出現セットに対する実用的なクエリの例を次に示します。
$pattern = '/\[VAR:(.*)\].*\[VAR:(.*)\].*\[VAR:(.*)\].*\[VAR:(.*)\]/';
$string = "[VAR:one] once apon a time [VAR:two]. And then there was the time that [VAR:three] went to [VAR:four]";
preg_match ( $pattern , $string, $matches );
print_r ( $matches );
これにより、期待どおりの結果が返されます。
[0] => [VAR:one] once apon a time [VAR:two]. And then there was the time that [VAR:three] went to [VAR:four]
[1] => one
[2] => two
[3] => three
[4] => four
パターンでpreg_matchとpreg_match_allのバリエーションを試してみましたが失敗しました (PREG_OFFSET_CAPTURE パラメーターを使用する場合と使用しない場合の両方):
$pattern = '/\[VAR:(.*)\]/';
どんな助けでも大歓迎です。