Oui dans ce cas faut adapter l'expression régulière qui n'était faite que pour capturer des mots. En prenant tout sauf virgules et crochets :
$string = "('1xrWb_VEHEZRY9JJ9v3lYY',#41,'Default',$,$,#619,$,$,.ELEMENT.,(44,59,59,999999),(4,59,59,999999),150000.,$,$)";
echo "string = $string<br/>";
function stringToArray($string) {
$string = str_replace(array('(', ')'), array('[', ']'), $string);
$string = preg_replace('`([^,\[\]]+)`', '"$1"', $string);
return json_decode($string);
}
echo '<pre>';
print_r(stringToArray($string));
echo '</pre>';
Sortie :
string = ('1xrWb_VEHEZRY9JJ9v3lYY',#41,'Default',$,$,#619,$,$,.ELEMENT.,(44,59,59,999999),(4,59,59,999999),150000.,$,$)
Array
(
[0] => '1xrWb_VEHEZRY9JJ9v3lYY'
[1] => #41
[2] => 'Default'
[3] => $
[4] => $
[5] => #619
[6] => $
[7] => $
[8] => .ELEMENT.
[9] => Array
(
[0] => 44
[1] => 59
[2] => 59
[3] => 999999
)
[10] => Array
(
[0] => 4
[1] => 59
[2] => 59
[3] => 999999
)
[11] => 150000.
[12] => $
[13] => $
)