Page 1 sur 1

preg_split avec <\s+> ou explode avec " "

Posté : 22 mai 2012, 14:44
par JulieDev
Bonjour,
je reprends un projet, et j'ai un doute sur un élément.
Effectivement je retrouve la ligne suivante :
$infos = preg_split("<\s+>", trim($line));
Après un var_dump de $infos et de $line,
j'ai l'impression qu'il s'agit d'un explode :
$infos = explode(" ", trim($line));
Pourriez-vous me confirmer que ces deux lignes ont le même fonctionnement ou m'expliquer la nuance s'il vous plaît ?

Re: preg_split avec <\s+> ou explode avec " "

Posté : 22 mai 2012, 19:00
par Ryle
La nuance est sur les caractères et le nombre d'espaces consécutifs que va traiter la fonction, et donc le nombre de cellule dans le tableau final.

Le "\s" de l'expression régulière inclus les espaces, les tabulations ainsi que les retours à la ligne. Le "+" permet de spécifier que s'il y a un ou plus de ces éléments contigus, ils sont traités comme s'il n'y en avait qu'un seul.
Par exemple, avec la chaine suivante (contenant 3 espaces consécutifs et un retour à la ligne) :
$line = "ma   chaine
est belle";
Ta fonction retournera le tableau

Code : Tout sélectionner

Array ( [0] => "ma" [1] => "chaine" [2] => "est" [3] => "belle" )
Alors qu'un implode sur le caractère espace retournera

Code : Tout sélectionner

Array ( [0] => "ma" [1] => "" [2] => "" [3] => "chaine\nest" [4] => "belle" )

Re: preg_split avec <\s+> ou explode avec " "

Posté : 23 mai 2012, 09:57
par JulieDev
Merci beaucoup pour cette réponse complète, j'avais du mal à m'y retrouver...
Bonne journée !
Julie