PHP json_decode commence par 0

Bonjour,

Quand je décode cette chaine il m'enlève les 0 de devant.

$var = "0610101010";
ex: $result = json_decode($var);

echo $result ;
=> 610101010

Comment on fait pour garder les 0 ?
Configuration: Linux
Firefox 3.0.14

5 réponses

  1. en htmlentities ça ne changera pas ton problème à mon avis car la il n'est nullement le cas d'entitées...

    Ce qu'il faudrait voir c'est le code de la page qui t'envoies ces infos, comment sont encodées les informations ?

    Sinon y a la méthode crados qui consiste a faire un test dans ta fonction pour savoir si la clé du tableau dans le foreach c'est "tel" mais ca pue grave....
    1. C'est parce que j 'ai des paramètres qui sont encodés avec des caractères spéciaux .

      Je reconstruis l'url avec des nouveaux paramètres pour rediriger la page.

      C' est un code existant, quand j 'ai voulu faire passer en paramètre le numéro de tél, je me suis rendu compte qu'il manquait le 0 devant.

      J'ai cherché d'ou ca pouvait venir et je me suis rendu compte que le json_decode me faisait disparaitre les 0 de devant.

      Je crois que je vais essayer d'encoder le tel en htmlentities, on verra bien.
      1. $param contient tout les éléments Get

        Comment ça, des paramètres que tu reçois via une URL grace à la méthode GET ??

        j 'ai essayé d'utiliser utf8_encode

        Pourquoi ? t'as un encodage particulier ?

        Expliques un peu plus le contexte STP et pourquoi tu veux utiliser du json_decode ?
        1. C 'est pas tout à fait comme ça.

          Le code il se présente :

          $param contient tout les éléments Get

          La fonction permet de construire l'url

          function implode_assoc($param) {
          $res = '';
          $amp = '';
          if (sizeof($param)>1) {
          $amp = '&';
          }

          foreach ($param as $key => $val) {

          $decoded = json_decode($val);
          if (isset($decoded)) {
          $res .= $amp . $key . '=' .$decoded ;
          } else {
          $res .= $amp . $key . '=' .$val;
          }
          }
          return $res;
          }

          si tu as une idée ....

          je sèche un peu, j 'ai essayé d'utiliser utf8_encode mais ca ne change rien.
          1. Si je ne m'abuse, il faudrait que ton entrée soit formatée différemment :

            <?php
            $var = '"0610101010"';
            $result = json_decode($var);

            var_dump($result) ; // ==> string(10) "0610101010"

            ?>