Page 1 sur 1

Expression régulière avec preg_split

Posté : 06 oct. 2009, 17:29
par thomas-24
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

Re: Expression régulière avec preg_split

Posté : 06 oct. 2009, 21:27
par visualight
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);

Re: Expression régulière avec preg_split

Posté : 06 oct. 2009, 21:29
par Invité
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

Posté : 06 oct. 2009, 21:33
par visualight
preg_replace + explode ? non ?

Re: Expression régulière avec preg_split

Posté : 06 oct. 2009, 21:40
par Invité
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...