farklı bi yoldan yaptım.
burada problem çıkaran şey parantezler idi.
parantez içini parçalamayan bir fonksiyon yazdım.
önce tüm noktalı virgülleri virgüle çeviriyoruz.
sonra aşağıdaki fonksiyonu uyguluyoruz.
function my_exp($str, $sign) {
$i = 0;
$p = 0;
$k = 0;
$str = $str . $sign;
$array = array();
$len = mb_strlen($str,'UTF-8');
while ($i < $len) {
if (mb_substr($str,$i,1,'UTF-8') == '(') $p = 1;
else if (mb_substr($str,$i,1,'UTF-8') == ')') $p = 0;
else if (mb_substr($str,$i,1,'UTF-8') == $sign && $p == 0) {
$new = trim(mb_substr($str,$k,$i-$k,'UTF-8'));
$k = $i+1;
if ($new) $array[] = $new;
}
$i++;
}
return $array;
}
$str = 'ali, veli (49, 50, abc); hepsi, deli; meli';
$str = str_replace(';',',',$str);
print_r(my_exp($str, ','));işine yarayan kullansın.