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,'"');
}