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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : preg_split avec <\s+> ou explode avec " "

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

par JulieDev » 23 mai 2012, 09:57

Merci beaucoup pour cette réponse complète, j'avais du mal à m'y retrouver...
Bonne journée !
Julie

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

par Ryle » 22 mai 2012, 19:00

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" )

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

par JulieDev » 22 mai 2012, 14:44

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 ?