Le 12/07/2008 12:55, Etienne SOBOLE a écrit :
En l'absence d'un groupe consacré aux expressions régulières, ces
questions ont traditionnellement été acceptées dans ce groupe pourvu
qu'il s'agisse quand même de leur usage à travers PHP.
ben c'est qu'a moitie lié au php.
En fait j'utilise json coté javascript et json_decode cote php.
le problème est que si en javascript j'ai un truc genre
var tData = [];
tData[5] = 10;
la serialisation json va me donner un truc genre
[null,null,null,null,null,10]
D'accord. Pourquoi ne pas avoir parlé de "null," au lieu de "x2" ?
ce que je souhaite faire c'est remplacer ca par
[@N5_10]
afin de réduire le flot de données a envoyer.
C'était #5 au début et non @N5_ ! Bon, voici une proposition en PHP,
tu peux l'adapter pour y mettre les caractères que tu veux à la place
de '#'.
---------------------------------------------------------------------
<?php
header("Content-Type: text/plain");
function repnull($matches)
{
$count = strlen($matches[0]) / 5;
return '#' . $count . substr($matches[0], -1);
}
function dorepnull($subject)
{
return preg_replace_callback('/(?<=[[,])(null,)*null[],]/',
'repnull', $subject);
}
$a = '[null,null,null,null,null]';
$b = '[a,null,b,null,null,c,null,d]';
$c = '[nullard,annulle,null,tronull,"null",null,nul]';
echo $a . "\n-> " . dorepnull($a) . "\n";
echo $b . "\n-> " . dorepnull($b) . "\n";
echo $c . "\n-> " . dorepnull($c) . "\n";
?>
---------------------------------------------------------------------
Le résultat de l'exécution est :
---------------------------------------------------------------------
[null,null,null,null,null]
-> [#5]
[a,null,b,null,null,c,null,d]
-> [a,#1,b,#2,c,#1,d]
[nullard,annulle,null,tronull,"null",null,nul]
-> [nullard,annulle,#1,tronull,"null",#1,nul]
---------------------------------------------------------------------
S'il y en a que ça intéresse (toi ou quelqu'un d'autre) je peux
expliquer pourquoi ça marche.
Cordialement,
--
Olivier Miakinen