Page 1 sur 1

Expressions régulières

Posté : 31 août 2012, 18:30
par zdaye
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.

Re: Expressions régulières

Posté : 31 août 2012, 19:00
par schim59
Bonjour

Modulo2

Re: Expressions régulières

Posté : 01 sept. 2012, 20:08
par Aureusms
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.

Re: Expressions régulières

Posté : 01 sept. 2012, 20:57
par Agabriel
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);
?>

Re: Expressions régulières

Posté : 01 sept. 2012, 21:09
par schim59
Ah je crois que j'étais hors sujet ^^

Re: Expressions régulières

Posté : 03 sept. 2012, 10:40
par zdaye
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);
?>