3v4l.org

run code in 300+ PHP versions simultaneously
<?php $re = '/(\((?:[^()]++|(?1))*\))(*SKIP)(*F)|,\h*/'; $strings = [ "Test A, Test B, Test C (data1, data1)", "Test A, Test B, Test C (data1, data1), Test D (data1, data1), Test E (data1, data1(data, data))", "Test A, Test B, Test C (data1, data1), Test D (data1, data1), Test E ((data1, data1))" ]; foreach($strings as $s) { print_r(preg_split($re, $s)); }

preferences:
27.11 ms | 405 KiB | 5 Q