Expression régulière avec preg_split

thomas-24
Invité n'ayant pas de compte PHPfrance

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

Eléphant du PHP | 428 Messages

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);
Modifié en dernier par visualight le 06 oct. 2009, 21:32, modifié 2 fois.

Invité
Invité n'ayant pas de compte PHPfrance

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.

Eléphant du PHP | 428 Messages

06 oct. 2009, 21:33

preg_replace + explode ? non ?

Invité
Invité n'ayant pas de compte PHPfrance

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...