title: Preg match all comma outside curly braces
body: <p>I have a string:</p>
  
  <pre><code>&lt;b&gt;08-14-2018 09:24:09&lt;/b&gt;,192.168.0.1,{"i":"2018-001370","ln":"FIRST","fn":"TEST","a":"570.00","d":"08\/14\/2018 09:23:00","ca":"550.00","ch":"20.00","chi":"s"},{"terapay_response":{"code":-106,"description":"Missing Check Amount Or Check Info"}}
  </code></pre>
  
  <p>and I want to match all comma outside the curly braces.</p>
  
  <p>My desired output would be:</p>
  
  <pre><code>[0] : &lt;b&gt;08-14-2018 09:24:09&lt;/b&gt;
  [1] : 192.168.0.1
  [2] : {"i":"2018-001370","ln":"FIRST","fn":"TEST","a":"570.00","d":"08\/14\/2018 09:23:00","ca":"550.00","ch":"20.00","chi":"s"}
  [3] : {"terapay_response":{"code":-106,"description":"Missing Check Amount Or Check Info"}}
  </code></pre>
  
  <p>I tried :</p>
  
  <pre><code>preg_match_all("/\((?:[^{}]|(?R))+\)|[^{},\s]+/", $line, $out);
  </code></pre>
  
  <p>but the output is different :</p>
  
  <pre><code>[0] : "&lt;b&gt;08-14-2018"
  [1] : "09:24:09&lt;/b&gt;"
  [2] : "192.168.0.1"
  [3] : ""i":"2018-001370""
  [4] : ""ln":"FIRST""
  [5] : ""fn":"TEST""
  [6] : ""a":"570.00""
  [7] : ""d":"08\/14\/2018"
  [8] : "09:23:00""
  [9] : ""ca":"550.00""
  [10] : ""ch":"20.00""
  [11] : ""chi":"s""
  [12] : ""terapay_response":"
  [13] : ""code":-106"
  [14] : ""description":"Missing"
  [15] : "Check"
  [16] : "Amount"
  [17] : "Or"
  [18] : "Check"
  [19] : "Info""
  </code></pre>
  
  <p>Thank you.</p>