Convertir une fonction javascript

Convertir une fonction javascript - PHP - Programmation

Marsh Posté le 22-07-2008 à 15:34:02    

Comment traduire cette fonction en langage php?
 
function decodeStr(str)  
{
 var alpha = 'abcdefghijklmnopqrstuvwxyz';
 alpha=alpha.split('');
 // cette fonction permet d'avoir le nombre de zeros demandes
 function getZeros(num)  
 {
  var str='';
  for (var i=1; i<=num; i++)
  str+=0;
  return str;
 }
 // maintenant on remplace la lettre par le nombre de zeros necessaires
    for (var i=alpha.length-1; i>=0; i--)  
 {
  str = str.replace(new RegExp(alpha[i],'g'), getZeros(i+1));
 }
   return str;
}

Reply

Marsh Posté le 22-07-2008 à 15:34:02   

Reply

Marsh Posté le 22-07-2008 à 15:46:19    

Bonjour,
 
pourrais-je avoir un exemple ?
 
Quel chaîne en entré ?
 
Merci


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 22-07-2008 à 16:19:11    

Ça pourrais donner quelque chose comme ça (code non testé):
 

Code :
  1. function decodeStr($str) {
  2. $alpha = 'abcdefghijklmnopqrstuvwxyz';
  3. for ($i=strlen($alpha)-1; $i>=0; $i--) {
  4.  $str = str_replace($alpha[$i], getZeros($i+1));
  5. }
  6. return $str;
  7. }
  8. function getZeros($num) {
  9. $str = '';
  10. for ($i=1; $i<=$num; $i++){
  11.  $str += 0;
  12. }
  13. return $str;
  14. }


 
En traduction "littérale" mais je n'ai pas compris l'utilité de la chose, n'y comment sont codé $str
 
merci de donner des précisions afin que je puisse corriger les éventuelles problème.


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 23-07-2008 à 09:09:13    

Voici se que j'avais au départ : //LC01200101000100000400000500006000400000003000000020000000050000000003
 
Voila se que j'ai obtenu avec une fonction qui encode (c'est du javascript) : LCa12b1a1c1e4e5d6c4g3g2h5i3
 
la "a" correspond a un zéro, le "b" a deux zéros etc...
 
Et ensuite je veux utiliser la fonction "decodeStr", seulement je l'ai en javascript mais il me la faut en php afin d'obtenir à nouveau se code : LC01200101000100000400000500006000400000003000000020000000050000000003
 

Reply

Marsh Posté le 23-07-2008 à 10:03:59    

Une idée???

Reply

Marsh Posté le 23-07-2008 à 10:53:18    

sachant que c'est moi qui ai codé les fonction, je peux assurer qu'elles marchent parfaitement. (En JS surtout :D) en php j'ai pas regardé, la flème

Reply

Marsh Posté le 23-07-2008 à 11:07:26    

oui en js sa marche parfaitement, seulement je dois exécuter la fonction décode en langage php.
 
Voici se que sa donne, seulement sa ne marche pas trés bien sa ne decode que le 'a'
 
/* fait l'inverse de la fonction précédente */
function decodeStr($str)  
{
 $alpha = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
 // maintenant on remplace la lettre par le nombre de zeros necessaires
    for ($i=25; $i>=0; $i--)  
 {  
  $str = str_replace($alpha[$i],getZeros($i+1), $str);
 }
 
 return $str;
}
 
// cette fonction permet d'avoir le nombre de zeros demandes
function getZeros($num)  
{
 $nbzero='';
 for ($i=1; $i<=$num; $i++)
 {
  $nbzero+=0;
 }
 return $nbzero;
}

Reply

Marsh Posté le 23-07-2008 à 11:15:37    

C'est bon j'ai trouver, c'était la concaténation dans la fonction getZeros($num) qui ne se faisait pas. J'ai remplacé $nbzero+=0;  par $nbzero=$nbzero."0";

Reply

Marsh Posté le 23-07-2008 à 11:19:26    

Bonjour,
Je viens de lire, mais il y a truc que je ne comprend toujours pas :
A quoi ça sert ?


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 23-07-2008 à 11:19:44    

et sinon tu peux très bien faire  
$nbzero.='0';
 
le + n'étant pas un opérateur de concaténation en PHP (désolé de pas avoir vu plus tôt :'(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed