PHP/Regex - {と}の間のすべてを取得しますか?

私はこのようなテキスト文字列を持っています

{hello | hi} {there | you}

私は{.. anythingthing}のインスタンスを数えたいので、上記の例では、私は戻りたいと思います:

hello | hi
  そこに|あなた

in the matches array created by preg_match_all()

今のコードは次のようになります:

preg_match_all('/{(.*?)}/', $text,$text_pieces);

$ text_piecesには以下が含まれます:

Array ( [0] => Array ( [0] => {hello|hi} [1] => {there|you} ) [1] => Array ( [0] => hello|hi [1] => there|you ) )

私が必要とするのはこれだけです:

[0] => hello|hi [1] => there|you 
0

1 答え

preg_match_all cannot omit the full text matches, only subpattern matches, therefore the only solution is to set $text_pieces to $text_pieces[1] after the function call:

if(preg_match_all('/{(.*?)}/', $text,$text_pieces))
{
    $text_pieces = $text_pieces[1];
}
2
追加された
+!しかし、PHPマッチがないときにPHPランタイムエラーを回避するために、エラーチェックコードを追加するべきでしょう。 preg_match_all()が0を返したとき。
追加された 著者 ridgerunner,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com