Si necesitais dividir una cadena en una matriz, donde los elementos de la cadena estan separados por coma (,) y opcionalmente un elemento puede estar acotado por doble comillas («). Una expresión regular y un poco de código extra puede ayudaros.

Código de prueba en c#:

     MatchCollection mc = Regex.Matches(
        ",\"hola desde\",\"una,dos,tres\",1,2,3,lineas,de codigo"+",", 
        "([^,\"]*,|\"[^\"]*\",)");
     foreach (Match m in mc)
     {
         System.Console.WriteLine(m.Value.Trim(',').Trim('"'));                               
     }

Función en PHP:

    function split_cadena_acotada($texto)
    {
        preg_match_all("([^,\"]*,|\"[^\"]*\",)", $texto.",", $matching_data);
        array_walk($matching_data[0], 'trim_value');
        return $matching_data[0];
    }
    function trim_value(&$value)
    { 
        $value = trim($value);
        $value = trim($value,',');
        $value = trim($value,'"');
    }