Expression régulière avec preg_split

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 : Expression régulière avec preg_split

Re: Expression régulière avec preg_split

par Invité » 06 oct. 2009, 21:40

preg_replace + explode ? non ?
Je sais comment faire en me passant d'une expression régulière, je cherche simplement à le faire en une fois, proprement avec un seul appel à une fonction.
Les expressions régulières sont parfaites pour ce genre de chose et notamment preg_split mais là, j'ai besoin d'aide...

Re: Expression régulière avec preg_split

par visualight » 06 oct. 2009, 21:33

preg_replace + explode ? non ?

Re: Expression régulière avec preg_split

par Invité » 06 oct. 2009, 21:29

PEux etre avec explode
$val = "foo|bar|'hello|world";
$val= explode("|", $val);
print_r($val);
Tu ne peux pas faire ce que je demande avec explode...
Test par toi même, tu verras et c'est assez logique, je ne veux pas scinder lorsque le pipe est entre quote.

Re: Expression régulière avec preg_split

par visualight » 06 oct. 2009, 21:27

PEux etre avec explode et preg_replace.

1. preg_replace sur les caractères \ de la chaine $val
2. Explode sur base des |
$val = "foo|bar|'hello|world";
$val= explode("|", $val);
print_r($val);

Expression régulière avec preg_split

par thomas-24 » 06 oct. 2009, 17:29

Bonjour,

Je souhaite scinder une chaine de caractère avec la fonction preg_split.

Voici la chaine de départ

Code : Tout sélectionner

"foo|bar|'hello|world\'abc\'def'|bye"
Je souhaiterai obtenir un tableau de la sorte :

Code : Tout sélectionner

foo bar hello|world'abc'def bye
Donc, en gros, réalisé un split sur le caractère pipe | sauf si il est dans une chaine délimitée par des quote '

J'ai essayé pas mal de solution mais je ne trouve pas LA solution.

Voilà le bout de code sur lequel je me base :

Code : Tout sélectionner

$val = "foo|bar|'hello|world\'abc\'def'|bye"; $val = preg_split('/xxx/', $val, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); print_r($val);
J'ai remplacé mon expression voulue par xxx...

Quelqu'un aurait-il ça sous la main / pourrait m'aider...

Merci