fork download
  1. <?php
  2.  
  3. $re = '~(\{(?:[^{}]++|(?1))*})(*SKIP)(*F)|\|~';
  4. $str = "Jason|Maria|Santa|{Lucia|Raul}'s father";
  5. print_r( preg_split($re, $str) );
Success #stdin #stdout 0.04s 23724KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Jason
    [1] => Maria
    [2] => Santa
    [3] => {Lucia|Raul}'s father
)