¿Dividir una cadena delimitada por comas en una matriz?

Resuelto Kevin asked hace 55 años • 9 respuestas

Necesito dividir mi entrada de cadena en una matriz entre las comas.

¿Hay alguna manera de explotar una cadena separada por comas en una matriz indexada y plana?

Aporte:

9,[email protected],8

Producción:

['9', 'admin@example', '8']  
Kevin avatar Jan 01 '70 08:01 Kevin
Aceptado

Intenta explotar :

$myString = "9,[email protected],8";
$myArray = explode(',', $myString);
print_r($myArray);

Producción :

Array
(
    [0] => 9
    [1] => [email protected]
    [2] => 8
)
Matthew Groves avatar Jul 14 '2009 14:07 Matthew Groves
$string = '9,[email protected],8';
$array = explode(',', $string);

Para situaciones más complicadas, es posible que necesites utilizar preg_split.

ceejayoz avatar Jul 14 '2009 14:07 ceejayoz

Si esa cadena proviene de un archivo csv, lo usaría fgetcsv()(o str_getcsv()si tienes PHP V5.3). Eso le permitirá analizar los valores citados correctamente. Si no es un csv, explode()debería ser la mejor opción.

soulmerge avatar Jul 14 '2009 14:07 soulmerge

¿Qué pasa si quieres que tus partes contengan comas? Bueno, cítalos. ¿Y luego qué pasa con las comillas? Bueno, duplícalos. En otras palabras:

part1,"part2,with a comma and a quote "" in it",part3

PHP proporciona la función https://php.net/str_getcsv para analizar una cadena como si fuera una línea en un archivo CSV que se puede usar con la línea anterior en lugar de explode:

print_r(str_getcsv('part1,"part2,with a comma and a quote "" in it",part3'));
Array
(
    [0] => part1
    [1] => part2,with a comma and a quote " in it
    [2] => part3
)
chx avatar Jul 06 '2020 23:07 chx