fork(1) download
  1. <?php
  2.  
  3. $results = [];
  4. $string = "@friends @john [quote]@and @jane[/quote] @doe";
  5. $rx = '~(\[quote\](?:(?1)|.)*?\[/quote])(*SKIP)(*F)|@\w+~s';
  6. preg_match_all($rx, $string, $results);
  7. print_r($results[0]);
Success #stdin #stdout 0.02s 23836KB
stdin
Standard input is empty
stdout
Array
(
    [0] => @friends
    [1] => @john
    [2] => @doe
)