[RESOLU] Expressions régulières

Petit nouveau ! | 4 Messages

31 août 2012, 18:30

Bonjour,

Je me casse la tête sur un problème d'expression régulière.
Je suis débutant.

je doit transformer cette chaine de caractère en Json

{"surtitre";"asdasddsa";"vignette";"178";"prix";"Entrée Libre";"image1";"186";"alt_1";"descriptif photo de présentation 1";"image_1";"187";"soustitre";"";"extrait";"";}

il faut que je remplace mes ";" par un fois des ":" et un autre fois des ",".

pour avoir

{"surtitre":"asdasddsa","vignette":"178","prix":"Entrée Libre","image1":"186","alt_1":"descriptif photo de présentation 1","image_1":"187","soustitre":"","extrait":""}

je ne trouve pas la soluce :(
pouvez m'aider ?

en vous remerciant.

Eléphant du PHP | 229 Messages

31 août 2012, 19:00

Bonjour

Modulo2

ViPHP
ViPHP | 1996 Messages

01 sept. 2012, 20:08

un truc simple : tu utilises explode() pour créer un tableau puis tu le parcours pour ajouter, toutes les clefs impairs, le caractère ":" et, toutes les clefs pairs, le caractères ","

Cela pourrait donner :
<?php
$string = {"surtitre";"asdasddsa";"vignette";"178";"prix";"Entrée Libre";"image1";"186";"alt_1";"descriptif photo de présentation 1";"image_1";"187";"soustitre";"";"extrait";"";}
$tabString = explode (";",$string);
$js = "";
foreach ($tabString as $clef => $s)
  $js .= ($clef%2 != 0) ? $s.":" : $s.";";
$js = substr ($js,0,-1);
echo $js;
?>
essaye déjà cela.

Petit nouveau ! | 1 Messages

01 sept. 2012, 20:57

Bonjour,
Avec une expression régulière :
<?php
$str  = '{"surtitre";"asdasddsa";"vignette";"178";"prix";"Entrée Libre";"image1";"186";"alt_1";"descriptif photo de présentation 1";"image_1";"187";"soustitre";"";"extrait";"";}';
$str2 = preg_replace("/([^;]*);([^;]*);/","\\1:\\2,",$str);

echo str_replace(',}','}',$str2);
?>

Eléphant du PHP | 229 Messages

01 sept. 2012, 21:09

Ah je crois que j'étais hors sujet ^^

Petit nouveau ! | 4 Messages

03 sept. 2012, 10:40

yep cool ! ça marche impect !
En plus j'ai un peu plus compris comment faire des expressions régulières.

merci !

Bonjour,
Avec une expression régulière :
<?php
$str  = '{"surtitre";"asdasddsa";"vignette";"178";"prix";"Entrée Libre";"image1";"186";"alt_1";"descriptif photo de présentation 1";"image_1";"187";"soustitre";"";"extrait";"";}';
$str2 = preg_replace("/([^;]*);([^;]*);/","\\1:\\2,",$str);

echo str_replace(',}','}',$str2);
?>