1 votes

retourne une chaîne vide de preg_split

En ce moment, j'essaie d'obtenir ceci :

Array
(
    [0] => hello
    [1] => 
    [2] => goodbye
)

Où l'indice 1 est la chaîne vide.

$toBeSplit= 'hello,,goodbye';

$textSplitted = preg_split('/[,]+/', $toBeSplit, -1);

$textSplitted ressemble à ça :

Array
(
    [0] => hello
    [1] => goodbye
)

J'utilise PHP 5.3.2.

5voto

Gumbo Points 279147

[,]+ signifie qu'un ou plusieurs caractères de type virgule sont recherchés, dans la mesure du possible. Utilisez juste /,/ et ça marche :

$textSplitted = preg_split('/,/', $toBeSplit, -1);

Mais vous n'avez même pas besoin d'expression régulière :

$textSplitted = explode(',', $toBeSplit);

1voto

Mike Pelley Points 1603

Que dites-vous de ça ?

$textSplitted = preg_split('/,/', $toBeSplit, -1);

Ta regex a pris toutes les virgules, pas seulement une.

0voto

Matteo Riva Points 14340

Votre motif divise le texte en utilisant une séquence de virgules comme séparateur (sa syntaxe n'est pas non plus parfaite, car vous utilisez une classe de caractères sans raison), donc deux (ou deux cents) virgules comptent comme une seule.

De toute façon, puisque vous utilisez un caractère littéral comme séparateur, utilisez explode() :

$str = 'hello,,goodbye';

print_r(explode(',', $str));

sortie :

Array
(
    [0] => hello
    [1] => 
    [2] => goodbye
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X