IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[PHP-JS] convertir un bout javascript en php ?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut [PHP-JS] convertir un bout javascript en php ?
    Bonjour,

    est-ce que quelqu'un est capable de retranscrire cela en PHP ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function hexToBin (s) {
      r = "";
    //  s = s.substring(2);
      var hexas = "0123456789abcdef";
      var i = 0;
      while (i<s.length) { r += String.fromCharCode((hexas.indexOf(s.charAt(i)) << 4) | hexas.indexOf(s.charAt(i+1))); i+=2;}
      return r;
    }
    Si une personne y arrive je lui en serai eternellement reconnaissant !

  2. #2
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Ce code semble transformer une chaine de caractères hexadécimaux en données binaires.
    En JavaScript y'avait plus simple pour faire ça.

    En php ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function hexToBin ($str) {
      $bin = '';
      $len = strlen($str);
      // Si la taille de $str est impaire, il y a une eurreur
      if ($len & 1) return false;
      // Si $str contient autre chose que c'est caractères hexadécimaux -> erreur
      if (!preg_match('/^[0-9a-zA-Z]+$/', $str)) return false;
     
      for ($i=0; $i<$len; $i++) {
        $bin .= chr(hexdec(substr($str, $i, 2)));
      }
      return $bin;
    }
    Ceci dit il aurait peut-être été plus judicieux de demander sur le forum php. Car ta question demande de savoir coder en php, et simplement de comprendre le javascript.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Oui certe mais personne ne m'a répondu..ou en tout cas pas aussi bien et vite que toi ! je vais tester ceci de ce pas !
    COmment aurais tu fais en javascript ?

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Ca ne fonction pas !

    J'ai ca en php pour faire l'inverse qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function stringToHex ($s)
    {
      $r = "0x";
      $hexes = array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
      for ($i=0; $i<strlen($s); $i++) {$r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]);}
      return $r;
    }
    et de toi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function stringToBin ($s) {
      $bin = '';
      $len = strlen($s);
      // Si la taille de $str est impaire, il y a une eurreur
      if ($len & 1) return false;
     
      for ($i=0; $i<$len; $i++) {
        $bin .= chr(hexdec(substr($s, $i, 2)));
      }
      return $bin;
    }
    J'ai donc fais le test suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'stringToHex:  '.stringToHex('test').'<br />';
    echo 'stringToBin:  '.stringToBin(stringToHex('test')).'<br />';
    Et j'obtiens le resultat suivant:

    stringToHex: 0x74657374
    stringToBin: tFeWs7t

    On remarque: t e s t

  5. #5
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Oui en effet c'ets une erreur toute bête, il faut remplacer $i++ par $i+=2 dans la boucle for.

    Sinon, en JavaScript j'aurais fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    hexToBin (str) {
      bin = "";
      if (str.len & 1) return false;
      if (!str.match(/^[0-9a-zA-Z]+$/)) return false;
      for (i=0; i<str.len; i+=2) {
        bin += String.fromCharCode(parseInt(str.substr(i, 2), 16));
      }
      return bin; 
    }
    En gros la même chose qu'en php.

    Quant-à ton binToString, je l'aurais fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function binToString($bin) {
      $str = '0x';
      $len = strlen($bin);
      for ($i=0; i<$len; $i++) {
        $str .= dechex(ord($bin{$i}));
      }
      return $str;
    }
    C'est plus court, mais après, à savoir si c'est plus rapide...

  6. #6
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Merci bcp à toi ! c'est vraiment encourageant d'avoir de l'aide ainsi !!!

    Merci.

    EDIT: je testerai et te tiendrais au courant ici.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    J'ai tester cela fonctionne.
    Mais j'ai tout de meme un soucis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo stringToBin(0x4ef9f48713388c59);
    // retourne: Nùô‡8ŒY
    Donc à première vu c'est bon ! Mais lorsque je regarde mon code source j'ai ceci:

    Soit un petit carré entre ‡ et 8, et je voudrais récup' le petit carré avec ! As-tu une idée ?

  8. #8
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Tu veux dire que tu veux le récupérer dans une variable javascript ?
    Si c'est le cas, alors tu aura du mal avec la forme binaire, car il s'agit d'un caractère de retour de chariot ; et celui-ci sera sûrement interprêté par javascript comme une nouvelle ligne, et provoquera une parse error.

Discussions similaires

  1. [PHP-JS] Convertir une variable javascript en php
    Par roxxxy dans le forum Langage
    Réponses: 14
    Dernier message: 01/03/2007, 12h12
  2. [PHP-JS] Probleme de popup javascript en php avec dreamweaver
    Par wadali_2000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 20h00
  3. [PHP-JS] Faire un appel JavaScript depuis PHP
    Par davinout dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2006, 20h03
  4. [PHP-JS] Transmettre une variable javascript vers php
    Par phpaide dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/05/2006, 08h30
  5. [PHP-JS] recuperation de variable javascript avec php
    Par dipajero dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 20h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo