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#:
1 2 3 4 5 6 7 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 | 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,'"'); } |